计算"new"和"delete"字节

Counting "new" and "delete" bytes

本文关键字:字节 delete new 计算      更新时间:2023-10-16

我有一个。net项目,使用c++项目,正在消耗大量内存。

我想知道是否有快速简便的方法来计算由new分配的流入字节和由delete操作符释放的流出字节。添加一些日志之类的东西

这两个操作符的源代码都是由Visual Studio提供的,所以我可以破解它。

问题是我可以看到巨大的虚拟机消耗,我想调查为什么。我尝试了几个内存分析器,但没有一个可以处理。net应用程序中的非托管c++分配

通常像ValgrnidRational Purify这样的内存分析工具可以帮助您分析程序的内存使用情况。

如果你仍然想拥有自己的实现,
您可以通过重载来替换全局newdelete操作符,并且在您自己的重载操作符中可以维护分配的内存计数。

如果你选择/被迫遵循第二个选项,有一些方面需要注意,你可以在这里阅读这个答案中的细节

如果您使用STL:
STL容器类依次使用全局new &delete分配操作符。所以如果你把new &delete全局操作符,则STL将使用它们而不是std new和delete操作符

您可以附加windbg并使用!heap -s命令开始您的调查。