升级到 Visual Studio 2019 时内存不足

Memory leas when upgrading to Visual Studio 2019

我最近将我们的项目从 VS2010 升级到 2019,效果很好,但是在调试器下运行它时,我在完成时遇到了很多内存泄漏。 当然,它们在 VS2010 中不存在。 我所有的资源都是用

构建的
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

但是泄漏的转储有点像这样:

[16300] Detected memory leaks!
[16300] Dumping objects ->
[16300] {64582} 
[16300] normal block at 0x06210D00, 16 bytes long.
[16300]  Data: <   z   z        > FC 8B AD 7A 18 8C AD 7A 01 00 00 00 80 DC 1C 06 
[16300] {64581} 
[16300] normal block at 0x06210E00, 16 bytes long.
[16300]  Data: <   z   z    0   > FC 8B AD 7A 18 8C AD 7A 01 00 00 00 30 D5 1C 06 
[16300] {64580} 
[16300] normal block at 0x062109C0, 16 bytes long.
[16300]  Data: <   z   z        > FC 8B AD 7A 18 8C AD 7A 01 00 00 00 E8 CB 1C 06 
[16300] {64579} 
[16300] normal block at 0x06210780, 16 bytes long.
[16300]  Data: <   z   z        > FC 8B AD 7A 18 8C AD 7A 01 00 00 00 90 C6 1C 06

这会持续大约 5700 行 ;-(

我已经检查了内存和句柄消耗:两者都正常。 我尝试使用像 MemPro(说没有泄漏)、Dr. Memory(崩溃)和 Visual leak detector 这样的工具,它说

[16300] No memory leaks detected.
[16300] Visual Leak Detector is now exiting.

在泄漏转储之后...

是否有可能我已经在 VS2010 中发现了漏洞,但它们哪里没有 found/reportet?我不这么认为?

那么有什么开始搜索的提示吗?

Is it likly that I had the leaks in VS2010 already but they where not found/reportet? I don't think so?

So are there any hints to start searching for it?

VS2017开始,VS有了一个不错的内存分析工具,可以用来查找内存泄漏。

在VS2019调试项目时(记得打断点),打开Debug --> Windows --> 显示诊断工具--> 选择内存使用

然后调试代码,遇到断点的时候,在Memory Usage[上点击Take snapshot =40=] window.

之后,点击图标进入内存分析,就可以找到问题了

您也可以参考one official document and two official document获取提示。

=========================================

除了,还可以use the CRT library to find memory leaks.

DeLeaker 成功了,帮我找到了漏洞。毕竟我发现了一些没有设置 #define new DEBUG_NEW 的 .cpp-files。修复之后,发现问题就很容易了。感谢您的帮助,Artem Razin