请问个有关问题,怎么在输出窗口看到详细new 的内存泄漏
请教个问题,如何在输出窗口看到详细new 的内存泄漏
试了下,对 malloc 支持很好,但对 new 就不行
用malloc 分配内存可以看到具体什么文件,第几行
Detected memory leaks!
Dumping objects ->
d:\Test\dfg.cpp(11) : {49} normal block at 0x003932D8, 10 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD
Object dump complete.
用new分配内存没法看到什么文件,第几行
Detected memory leaks!
Dumping objects ->
{49} normal block at 0x003932D8, 40 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
要如何设置,让 new 也可以详细输出呢?毕竟创建对象是用new
------解决方案--------------------
重载new操作符
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
__FILE__:编译时当前文件名
__LINE__:编译时指当前行数
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
MSDN里面有很多相关的资料,你可以搜索下!
- C/C++ code
#define _CRTDBG_MAP_ALLOC #include<stdlib.h> #include<crtdbg.h> int main() { _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //int* p = (int*)malloc(10); int * a = new int[10]; return 1; }
试了下,对 malloc 支持很好,但对 new 就不行
用malloc 分配内存可以看到具体什么文件,第几行
Detected memory leaks!
Dumping objects ->
d:\Test\dfg.cpp(11) : {49} normal block at 0x003932D8, 10 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD
Object dump complete.
用new分配内存没法看到什么文件,第几行
Detected memory leaks!
Dumping objects ->
{49} normal block at 0x003932D8, 40 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
要如何设置,让 new 也可以详细输出呢?毕竟创建对象是用new
------解决方案--------------------
重载new操作符
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
__FILE__:编译时当前文件名
__LINE__:编译时指当前行数
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
MSDN里面有很多相关的资料,你可以搜索下!