您的位置:首页 > 其它

内存分配管理 自定义

2016-07-06 11:21 197 查看
在内存管理中,经常需要自定义内存分配释放,也就是需要定义new 和 delete.

通常为了有针对性的对某些对象的内存分配进行管理,定义一个内存管理基类

1.定义

struct Memory
{
public:

static void* Alloc(size_t size);
static void  Free(const void* p);

static void* Alloc(size_t size, int line, const char *func);
static void* Alloc(size_t size, const char* fmt, ...);

void* operator new(me_size size);
void* operator new(me_size size, int line, const char file[]);
void* operator new(me_size size, int line, const char file[], const char* info);

void  operator delete(void* p);
void  operator delete(void* p, int line, const char file[]);
void  operator delete(void* p, int line, const char func[], const char* ext) {};

void* operator new[](me_size size);
void  operator delete[](void* p);
};


2.使用

class MemObject : public Memory { };

3.调用

MemObject* mo = new MemObject();
int* pi = (int*)Memory::Alloc(sizeof(int) * 10);
Memory::Free(pi);
delete mo;


通过该方式,实现内存的自我管理和监控。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: