我正在开发一个内存泄漏工具。在这个我重载 new 和 delete 运算符。它工作正常。但是我创建这个工具的代码大约是 15000 行。我无法更改现有代码,只有我可以将 memoryleak 工具功能调用到现有代码中。具有 stl 容器的现有代码(如列表、地图、堆栈等)。Stl 容器还调用 new 和 delete 运算符来分配或释放内存。我希望 stl 容器应该调用不在重载的 new 和 delete 中的 new 和 delete 运算符。例如:
int *iptr = new int[10] ----> should call overloaded new[]
delete [] iptr -------------> should call overloaded delete[]
map.insert(10) -------------> should call default new[] ( which are in new.h)
map.erase() ---------------> should call default delete[] ( which are in new.h)
我该怎么做?任何帮助将不胜感激。
对不起,我忘了提到我正在用以下宏替换 new 和 delete:
#define new DEBUG_NEW
#define DEBUG_NEW TrackMemory(__FILE__, __LINE__) ->* new
#define delete TrackDelete(__FILE__, __LINE__); delete
这里 TrackMemory 用于跟踪内存,new 用于分配内存,与 delete 相同。我的工具也可以正常工作,但是当 stl 容器进入图片时,它会给出错误的结果,因为它们只使用重载的新容器。请帮帮我