【发布时间】:2012-01-01 10:18:20
【问题描述】:
首先,至少有 4-5 个主题与 SO 上的主题相似。我阅读了它们中的每一个,但我觉得它们并没有真正帮助我解决这个特定问题。如果其他人发现重复的问题,我深表歉意。在发布此之前,我已经完成了我的搜索,因为这似乎是一个非常常见的问题。
我在 Windows 7 上使用 Visual Studio .NET 2003。
我有自己的 new/delete 重载,指向我自己对 malloc() 和 free() 的自定义调用以进行诊断。我的新/删除重载在一个头文件中,我已经包含在几个文件中。
问题是,代码库几乎是意大利面条,没有简单的方法可以确保所有东西都使用这些重载。第三方库包含黑盒。我们也到处使用 STL。
在我的测试中,我发现 STL 仍在混合调用我自己的 new/delete 和标准 MSVC new/delete 调用。
将我的头文件包含在数以千计的其他文件中似乎不太现实,这将花费太长时间。谁能提供一些关于如何正确有效地全局重载 new/delete 以便一切都使用我的自定义内存管理器的提示?
【问题讨论】:
-
如果您在一个应涵盖大部分内容的预编译头文件中全局定义运算符。或者,如果用于检测内存泄漏,您可以使用 CRT 堆函数。
标签: c++ windows memory-management visual-studio-2003