Visual Studio - 内存泄漏检测 - 断点不起作用&不明确的泄漏

时间:2015-01-10 11:19:33

标签: c++ memory-leaks visual-studio-2013

我想测试C ++ Visual Studio内存泄漏检测中的内存泄漏程序。在一些泄漏上,调试控制台中的源和行号有很好的路径。但是在一些泄漏上只有内存地址。有些我能够在我的代码中识别,但有些则没有。在一些应用中它是例如12个字节,还有一些。

我尝试了最简单的单元测试,使用以下方法。甚至这会引发4字节的泄漏。

Cpp文件:

TEST_METHOD(TestMemoryLeakDetection){
 _CrtDumpMemoryLeaks();
}

stdafx.h,它包含在所有文件中:

#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers

// http://msdn.microsoft.com/en-us/library/e5ewb1h3(v=vs.71).aspx
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
    #ifndef DBG_NEW
        #define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
        #define new DBG_NEW
    #endif
#endif  // _DEBUG

调试期间的检测输出显示:

Detected memory leaks!
Dumping objects ->
{147} normal block at 0x069A9EA0, 4 bytes long.
 Data: <t  ]> 74 A8 95 5D 
Object dump complete.

我也试过这个,但它没有做任何事情:

TEST_METHOD(TestMemoryLeakDetectionFour){
 _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
 _CrtSetBreakAlloc(147);
 _CrtSetBreakAlloc(146);
}

我使用的是Visual Studio 2013和Visual C ++〜Native Unit Test Project。 请注意,在较大的项目中,我遇到越来越多类似的小4字节泄漏(我无法确定它们来自哪里)。

感谢您的任何想法。 Jarda

0 个答案:

没有答案