内存泄漏检测与升压::测试
问题描述:
我尝试启用MSVC的内存泄漏检测与这样的片段,我发现here行号:内存泄漏检测与升压::测试
Detected memory leaks!
Dumping objects ->
C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18}
normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
我试图设置预处理器定义
手动_CRTDBG_MAP_ALLOC
在项目属性,但我只得到这样的:
Dumping objects ->
{1466} normal block at 0x00BD4DD0, 40 bytes long.
Data: <(o; ; (o; 1 > 28 6F 3B 00 90 A9 3B 00 28 6F 3B 00 00 D6 31 10
没有行号。我也试图通过手动使用BOOST_TEST_NO_MAIN这样定义主要和转储由自己:
int main(int argc, char* argv[])
{
int res = ::boost::unit_test::unit_test_main(&init_function, argc, argv);
_CrtDumpMemoryLeaks();
return res;
}
而且没有任何成功。如何才能做到这一点?
答
使用如Boost.Test可以使用--detect_memory_leaks = “分配数量”
答
在MSVC可以断点设置分配编号1466,代码:
_crtBreakAlloc = 1466
或在监视窗口中,您可以添加_crtBreakAlloc
和价值1466一旦应用程序启动(当然你需要一个主函数中的断点)。 More details on MSDN
+0
这解决了它。谢谢 – schoetbi
答
尝试使用调试器!例如,借助于deleaker可以选择栈来查看内存分配的位置
我接受了这个,因为这更好! – schoetbi