内存分配管理 自定义

在内存管理中,经常需要自定义内存分配释放,也就是需要定义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;

通过该方式,实现内存的自我管理和监控。

posted @ 2016-07-06 11:21  goooon  阅读(227)  评论(0编辑  收藏  举报