利用C++的new和delete操作符重载特性,可以对自定义的struct和class进行统一内存管理,再加上STL allocator的开放特性,便可以将STL容器对象的内存管理并入struct和class的内存管理,进而将这三者的内存管理统一。
首先实现自定义的内存管理算法框架,开放接口为allocate和deallocate,实现库为memmgr.dll
class memory_manager
{
public:
virtual void* allocate(size_t size) = 0;
virtual void deallocate(void* ptr, size_t size) = 0;
}
通过显示加载或隐式链接得到memmgr.dll导出的自定义内存管理框架接口指针
memory_manager* ptrmemmgr;
针对struct和class,建立公共基类,并调用导出的内存管理相关接口
class basic_object
{
public:
void* operator new(size_t size)
{
return (ptrmemmgr->allocate(size);
}
void operator delete(void* ptr, size_t size);
{
ptrmemmgr->deallocate(ptr, size);
}
};
自此,对