Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试堆内存泄漏检测-奇怪的结果? 我认为我的C++应用程序很紧凑,不会泄漏任何内存。长期运行的压力测试和静态代码分析器似乎也表明了这一点。但是,在执行非常复杂的用法时,Visual Studio 2008内置调试堆将在退出时显示以下警告:_C++_Visual Studio_Visual Studio 2008_Memory Leaks - Fatal编程技术网

调试堆内存泄漏检测-奇怪的结果? 我认为我的C++应用程序很紧凑,不会泄漏任何内存。长期运行的压力测试和静态代码分析器似乎也表明了这一点。但是,在执行非常复杂的用法时,Visual Studio 2008内置调试堆将在退出时显示以下警告:

调试堆内存泄漏检测-奇怪的结果? 我认为我的C++应用程序很紧凑,不会泄漏任何内存。长期运行的压力测试和静态代码分析器似乎也表明了这一点。但是,在执行非常复杂的用法时,Visual Studio 2008内置调试堆将在退出时显示以下警告:,c++,visual-studio,visual-studio-2008,memory-leaks,C++,Visual Studio,Visual Studio 2008,Memory Leaks,检测到内存泄漏 正在转储对象-> 0x03397FF8处的{318231}正常块,0字节长。 数据:吕 什么是长度为0字节的内存“泄漏”?我是不是在腐化垃圾堆?什么可能导致调试堆发出这样的警告?在空括号中的值后面看到那些“u”字符令人毛骨悚然。但是看看CRT源代码,这可能是由转储代码中的错误造成的,当内存块为0字节(dbgheap.c中的valbuff变量)时,它似乎不会零终止字符串 否则,分配零字节是受支持的方案。你的代码没有去分配它也不是很神秘。如果可以在“正常块”输出稳定之前获得数字,则可

检测到内存泄漏
正在转储对象->
0x03397FF8处的{318231}正常块,0字节长。
数据:吕

什么是长度为0字节的内存“泄漏”?我是不是在腐化垃圾堆?什么可能导致调试堆发出这样的警告?

在空括号中的值后面看到那些“u”字符令人毛骨悚然。但是看看CRT源代码,这可能是由转储代码中的错误造成的,当内存块为0字节(dbgheap.c中的valbuff变量)时,它似乎不会零终止字符串


否则,分配零字节是受支持的方案。你的代码没有去分配它也不是很神秘。如果可以在“正常块”输出稳定之前获得数字,则可以在初始化代码中指定_crtBreakAlloc(),以强制设置断点。也可以在CRT调试分配器上设置条件断点。跟踪malloc或新调用以找到它。

Argh。没关系,我找到了。静态链接库正在通过新[]分配长度为0的数组。如果它也使用delete[]来杀死它,我想这是可以的。但是,删除调用是有条件的,只有当数组大小>0时才会发生。

谢谢您的回答。我会奖励你分数,因为你指出分配0字节实际上是一个有效的方案——这一洞察引导我走上正确的道路。