如何在C++中使用my_alloc进行_all_新调用?

ano*_*non 0 c++ constructor memory-management new-operator

想象一下,我在C-land,我有

 void* my_alloc(size_t size);
 void* my_free(void*);
Run Code Online (Sandbox Code Playgroud)

然后我可以浏览我的代码并用my_alloc/my_free替换所有对malloc/free的调用.

怎么,我知道了一个Foo课,我可以做新的安置; 我也可以重载新运算符.但是,有没有办法为我的所有 C++类做到这一点?(即我想为新的和新的[]使用我自己的分配器;但我不想破解并破解我定义的每个类.)

谢谢!

ken*_*ytm 7

在全球范围内,

 void* operator new(size_t s) { return my_alloc(s); }
 void operator delete(void* p) { my_free(p); }
 void* operator new[](size_t s) { return my_alloc(s); }
 void operator delete[](void* p) { my_free(p); }
Run Code Online (Sandbox Code Playgroud)

  • 实际上,有12个函数需要替换:new/delete,new/delete nothrow,placement new/delete - 每个都有一个数组版本.见这里:http://www.gamedev.net/community/forums/viewreply.asp?ID = 2471345 (5认同)