内存分配管理 自定义
在内存管理中,经常需要自定义内存分配释放,也就是需要定义new 和 delete.
通常为了有针对性的对某些对象的内存分配进行管理,定义一个内存管理基类
1.定义
1 struct Memory 2 { 3 public: 4 5 static void* Alloc(size_t size); 6 static void Free(const void* p); 7 8 static void* Alloc(size_t size, int line, const char *func); 9 static void* Alloc(size_t size, const char* fmt, ...); 10 11 void* operator new(me_size size); 12 void* operator new(me_size size, int line, const char file[]); 13 void* operator new(me_size size, int line, const char file[], const char* info); 14 15 void operator delete(void* p); 16 void operator delete(void* p, int line, const char file[]); 17 void operator delete(void* p, int line, const char func[], const char* ext) {}; 18 19 void* operator new[](me_size size); 20 void operator delete[](void* p); 21 };
2.使用
1 class MemObject : public Memory { };
3.调用
1 MemObject* mo = new MemObject(); 2 int* pi = (int*)Memory::Alloc(sizeof(int) * 10); 3 Memory::Free(pi); 4 delete mo;
通过该方式,实现内存的自我管理和监控。