- 类中的new/delete重载
#include <iostream> #include <new> class A { public: void *operator new(size_t size) { printf("%d=====1\n", sizeof(size)); return ::operator new(size); }; void operator delete(void* ptr) { printf("=====2\n"); delete ptr; }; private: int a; }; int main() { A* ptr = new A; delete ptr; }
- 全局的重载
#incliude <iostream> void * operator new(size_t size ){ //TODO: printf("=====1 %d\n", size); return malloc(sizeof(size)); }; void operator delete(void* ptr ){ //TODO: printf("=====2\n"); free(ptr); } int main() { void *tmp = new int; delete tmp; }