2 wzf881116 wzf881116 于 2013.12.25 16:50 提问

请哪位大神帮忙解决下这个问题-内存泄露

请哪位大神帮忙解决下这个问题,实在是找不到哪个地方内存泄露,凡是代码中用到new的,我都delete了。。。
Detected memory leaks!
Dumping objects ->
{107} normal block at 0x00206188, 21 bytes long.
Data: < l| > A8 6C 7C 00 04 00 00 00 04 00 00 00 01 00 00 00
{106} normal block at 0x00206130, 21 bytes long.
Data: < l| > A8 6C 7C 00 04 00 00 00 04 00 00 00 01 00 00 00
{105} normal block at 0x002060D8, 28 bytes long.
Data: < l| > A8 6C 7C 00 0B 00 00 00 0B 00 00 00 01 00 00 00
{76} normal block at 0x00205010, 49 bytes long.
Data: < l| > A8 6C 7C 00 04 00 00 00 20 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(195) : {75} normal block at 0x00204F30, 160 bytes long.
Data: < > E8 03 00 00 00 00 00 00 FF FF FF FF 00 00 00 00
{74} normal block at 0x00204EA0, 84 bytes long.
Data: < > FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00
Object dump complete.

3个回答

perlinson
perlinson   2013.12.25 17:30
已采纳

在app类的构造函数中调用

_CrtSetBreakAlloc(107) 定位第一个

程序中断后 调用堆栈 查看 泄露的位置

wzf881116
wzf881116 大神,我是新手,不是太懂哎,您能讲的详细点么,最好发段代码给我看看啊,谢谢大神了。。。
大约 4 年之前 回复
perlinson
perlinson   2013.12.25 17:37

C******App::C****App()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
_CrtSetBreakAlloc(107);
}

如果是win32 程序的话 按f10 然后 在监视窗口输入 _crtBreakAlloc 修改为107 然后f5继续

wzf881116
wzf881116 大神,在线么
大约 4 年之前 回复
wzf881116
wzf881116 strMtBaudRate = strReturn.Right(4);貌似找到这个了。。。
大约 4 年之前 回复
wzf881116
wzf881116 哦哦,好的,感谢大神。。。
大约 4 年之前 回复
perlinson
perlinson 双击 如果 不是你写的函数 就 选下一个
大约 4 年之前 回复
wzf881116
wzf881116 恩,调出来了,然后怎么做呢?
大约 4 年之前 回复
perlinson
perlinson alt + 7 试试 我的是这个 快捷键 或者 顶上的菜单 选调试->窗口->调用堆栈
大约 4 年之前 回复
wzf881116
wzf881116 堆栈窗口怎么打开呢?
大约 4 年之前 回复
perlinson
perlinson 一步一步 往前找
大约 4 年之前 回复
perlinson
perlinson 选择中断后 打开堆栈窗口
大约 4 年之前 回复
wzf881116
wzf881116 /* break into debugger at specific memory allocation */ if (_crtBreakAlloc != -1L && lRequest == _crtBreakAlloc) _CrtDbgBreak();出发一个断点
大约 4 年之前 回复
perlinson
perlinson 恩 运行 之后有没有中断下来
大约 4 年之前 回复
wzf881116
wzf881116 CAutoRunApp::CAutoRunApp() { // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance 中 _CrtSetBreakAlloc(107); }
大约 4 年之前 回复
perlinson
perlinson 你的mfc类的名字叫什么
大约 4 年之前 回复
wzf881116
wzf881116 那MFC该怎么弄呢?
大约 4 年之前 回复
wzf881116
wzf881116 MFC的。。。
大约 4 年之前 回复
weiyuan2011
weiyuan2011   2013.12.26 14:40
wzf881116
wzf881116 感谢
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!