相关疑难解决方法(0)

C++ - 使用_CrtDumpMemoryLeaks()进行内存泄漏测试 - 不输出行号

我正在使用Visual Studio 2010中的SDL进行游戏.我遇到了_CrtDumpMemoryLeaks()宏,并认为我会试一试.调用_CrtDumpMemoryLeaks()会将内存泄漏打印到输出窗口,但它不会显示它发生的位置.

我已经阅读了内存泄漏检测启用的MSDN文章,它解释了如果我定义_CRTDBG_MAP_ALLOC它应该输出有问题的语句的行号.在我的情况下,这不会发生.(但是,如果我直接使用malloc(),而不是使用'new',我能够让它工作.

代码:

#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int *var = new int(5);

    _CrtDumpMemoryLeaks();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出如下:

Detected memory leaks!
Dumping objects ->
{58} normal block at 0x007D1510, 4 bytes long.
 Data: <    > 05 00 00 00 
Object dump complete.
Run Code Online (Sandbox Code Playgroud)

If _CrtDumpMemoryLeaks()在使用"new"分配时无法输出行号,然后建议其他方法来实现类似的行为.

c++ memory-leaks crt visual-studio

16
推荐指数
2
解决办法
2万
查看次数

有没有办法在每个源文件中自动复制#define

我想在我的Visual C++ 2005解决方案中的每个源文件中出现以下内容:

  #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
  #define new DEBUG_NEW
Run Code Online (Sandbox Code Playgroud)

有没有办法在不手动复制的情况下执行此操作?编译选项?

c++ macros memory-leaks c-preprocessor

2
推荐指数
1
解决办法
1145
查看次数

标签 统计

c++ ×2

memory-leaks ×2

c-preprocessor ×1

crt ×1

macros ×1

visual-studio ×1