请教个问题,如何在输出窗口看到详细new 的内存泄漏

unhappyless 2012-03-25 05:45:32

#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
...全文
50 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinyuping 2012-03-25
  • 打赏
  • 举报
回复
重载new操作符
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)

__FILE__:编译时当前文件名
__LINE__:编译时指当前行数

_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);

MSDN里面有很多相关的资料,你可以搜索下!

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧