首页
社区
课程
招聘
[旧帖] [求助][求助]史无前例的内存泄露 0.00雪花
发表于: 2013-11-6 11:10 1788

[旧帖] [求助][求助]史无前例的内存泄露 0.00雪花

2013-11-6 11:10
1788
首先,没有任何new、malloc;至少在俺自己的代码里没有。
    引用的库均为系统自带,MFC STL socket 而已
    现象:
           运行10来分钟  提示内存不足。
           用leakdiag检测内存泄露,很多API调用处都显示有内存泄露,报告如下。
    提示: 已经把VS2008 的工程属性-》C/C++/代码生成 -》运行时库  设置成 MD 
             (据高手说 有些内存泄露是因为  引用的库使用不同版本的运行时库)

<STACK numallocs="01" size="0548" totalsize="0548">
<STACKSTATS>
<SIZESTAT size="0548" numallocs="01"/>
<HEAPSTAT handle="3f0000" numallocs="01"/>
</STACKSTATS>
<FRAME num="0" dll="MSVCR90D.dll" function ="_heap_alloc_base" offset="0x5E" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.c" line="105" addr="0x102C103E" />
<FRAME num="1" dll="MSVCR90D.dll" function ="_heap_alloc_dbg_impl" offset="0x1F6" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c" line="427" addr="0x102CFD76" />
<FRAME num="2" dll="MSVCR90D.dll" function ="_nh_malloc_dbg_impl" offset="0x1F" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c" line="239" addr="0x102CFB2F" />
<FRAME num="3" dll="MSVCR90D.dll" function ="_calloc_dbg_impl" offset="0xA3" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c" line="593" addr="0x102CFFE3" />
<FRAME num="4" dll="MSVCR90D.dll" function ="_calloc_dbg" offset="0x2C" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c" line="644" addr="0x102D003C" />
<FRAME num="5" dll="MSVCP90D.dll" function ="_Getctype" offset="0x36" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\_tolower.c" line="144" addr="0x104EEE36" />
<FRAME num="6" dll="MSVCP90D.dll" function ="std___Locinfo___Getctype" offset="0x14" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\xlocinfo" line="126" addr="0x10488394" />
<FRAME num="7" dll="MSVCP90D.dll" function ="std__ctype<wchar_t>___Init" offset="0x17" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\xlocale" line="2109" addr="0x1048BF07" />
<FRAME num="8" dll="MSVCP90D.dll" function ="std__ctype<wchar_t>__ctype<wchar_t>" offset="0x50" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\xlocale" line="2088" addr="0x1048BD00" />
<FRAME num="9" dll="MSVCP90D.dll" function ="std__ctype<wchar_t>___Getcat" offset="0xFD" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\xlocale" line="2095" addr="0x1048BE1D" />
<FRAME num="10" dll="DefWorld.exe" function ="std__use_facet<std__ctype<wchar_t> >" offset="0xBA" filename="d:\program files\microsoft visual studio 9.0\vc\include\xlocale" line="498" addr="0x46E74A" />
<FRAME num="11" dll="DefWorld.exe" function ="std__operator<<<wchar_t,std__char_traits<wchar_t> >" offset="0x149" filename="d:\program files\microsoft visual studio 9.0\vc\include\ostream" line="667" addr="0x46DD29" />
<FRAME num="12" dll="DefWorld.exe" function ="CDataPage__ProcessResult" offset="0x45B" filename="d:\yahoo\defworld-md\datapage.cpp" line="1099" addr="0x43F37B" />
<FRAME num="13" dll="DefWorld.exe" function ="CDataPage__OnTimer" offset="0x4A" filename="d:\yahoo\defworld-md\datapage.cpp" line="771" addr="0x43D92A" />
<STACKID>053E17E8</STACKID>
</STACK>
<STACK numallocs="01" size="032" totalsize="032">
<STACKSTATS>
<SIZESTAT size="032" numallocs="01"/>
<HEAPSTAT handle="150000" numallocs="01"/>
</STACKSTATS>
<FRAME num="0" dll="ntdll.dll" function ="RtlDeleteCriticalSection" offset="0x15C" filename="" line="" addr="0x7C9314D6" />
<FRAME num="1" dll="ntdll.dll" function ="RtlInitializeCriticalSectionAndSpinCount" offset="0x4C" filename="" line="" addr="0x7C931566" />
<FRAME num="2" dll="kernel32.dll" function ="InitializeCriticalSectionAndSpinCount" offset="0x15" filename="" line="" addr="0x7C80B8DE" />
<FRAME num="3" dll="UxTheme.dll" function ="GetThemeTextMetrics" offset="0xCC4" filename="" line="" addr="0x5ADDBF57" />
<FRAME num="4" dll="UxTheme.dll" function ="GetThemeTextMetrics" offset="0xB25" filename="" line="" addr="0x5ADDBDB8" />
<FRAME num="5" dll="UxTheme.dll" function ="GetThemeTextMetrics" offset="0xAE1" filename="" line="" addr="0x5ADDBD74" />
<FRAME num="6" dll="UxTheme.dll" function="" filename="" line="" addr="0x5adc166e" offset="0x0000166E" />
<FRAME num="7" dll="ntdll.dll" function ="LdrInitializeThunk" offset="0x24" filename="" line="" addr="0x7C92118A" />
<FRAME num="8" dll="ntdll.dll" function ="LdrFindResourceDirectory_U" offset="0x28D" filename="" line="" addr="0x7C93B5D2" />
<FRAME num="9" dll="ntdll.dll" function ="RtlValidateUnicodeString" offset="0x511" filename="" line="" addr="0x7C9362DB" />
<FRAME num="10" dll="ntdll.dll" function ="LdrLoadDll" offset="0x110" filename="" line="" addr="0x7C93643D" />
<FRAME num="11" dll="kernel32.dll" function ="LoadLibraryExW" offset="0xC8" filename="" line="" addr="0x7C801BBD" />
<FRAME num="12" dll="kernel32.dll" function ="LoadLibraryExA" offset="0x1F" filename="" line="" addr="0x7C801D72" />
<FRAME num="13" dll="kernel32.dll" function ="LoadLibraryA" offset="0x2D" filename="" line="" addr="0x7C801DA8" />
<STACKID>01CF4008</STACKID>
</STACK>
<STACK numallocs="01" size="032" totalsize="032">
<STACKSTATS>
<SIZESTAT size="032" numallocs="01"/>
<HEAPSTAT handle="150000" numallocs="01"/>
</STACKSTATS>
<FRAME num="0" dll="ntdll.dll" function ="RtlAddAtomToAtomTable" offset="0x16E" filename="" line="" addr="0x7C954710" />
<FRAME num="1" dll="ntdll.dll" function ="RtlAddAtomToAtomTable" offset="0x7C" filename="" line="" addr="0x7C95461E" />
<FRAME num="2" dll="kernel32.dll" function ="DeleteAtom" offset="0x22" filename="" line="" addr="0x7C8330B7" />
<FRAME num="3" dll="kernel32.dll" function ="AddAtomW" offset="0x11" filename="" line="" addr="0x7C8330D2" />
<FRAME num="4" dll="UxTheme.dll" function ="SetWindowTheme" offset="0x9E" filename="" line="" addr="0x5ADCB43C" />
<FRAME num="5" dll="UxTheme.dll" function ="SetWindowTheme" offset="0x5C" filename="" line="" addr="0x5ADCB3FA" />
<FRAME num="6" dll="comdlg32.dll" function ="PrintDlgExW" offset="0x2469" filename="" line="" addr="0x7634C1ED" />
<FRAME num="7" dll="comdlg32.dll" function ="GetOpenFileNameA" offset="0x9196" filename="" line="" addr="0x7632C235" />
<FRAME num="8" dll="comdlg32.dll" function ="GetOpenFileNameA" offset="0x55B" filename="" line="" addr="0x763235FA" />
<FRAME num="9" dll="USER32.dll" function ="GetDC" offset="0x6D" filename="" line="" addr="0x77D18734" />
<FRAME num="10" dll="USER32.dll" function ="EnumDisplaySettingsA" offset="0x27D" filename="" line="" addr="0x77D23CE4" />
<FRAME num="11" dll="USER32.dll" function ="EnumDisplaySettingsA" offset="0xC9" filename="" line="" addr="0x77D23B30" />
<FRAME num="12" dll="USER32.dll" function ="DefDlgProcA" offset="0x22" filename="" line="" addr="0x77D3E599" />
<FRAME num="13" dll="USER32.dll" function ="GetDC" offset="0x6D" filename="" line="" addr="0x77D18734" />
<STACKID>01CF49A8</STACKID>
</STACK>

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 541
活跃值: (654)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
2
就这点?这点是看不出内存泄露的
2013-11-6 13:24
0
雪    币: 541
活跃值: (654)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
3
三处分配内存的地方,每处分配了一次,总共分配的字节数才0548+032+032。

你应该关注的是<STACK numallocs="01" size="032" totalsize="032">

numallocs次数多的调用栈
2013-11-6 13:26
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
找了一周也没有头绪
MFC程序: 里面用到了 STL,还有一些宽字符的处理(为了支持中文)
下面是leakdiag 的log附件,请帮我看看!
DefWorld.txt
上传的附件:
2013-11-6 16:18
0
雪    币: 541
活跃值: (654)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
5
DefWorld.txt. 里面已经告诉你了。如果这都看不明白的话,别人也没法帮你的。
2013-11-6 18:49
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不好意思可能是我没说明白

的确能定位到内存泄露的位置,但就是不明白为什么泄露。

2013-11-7 10:27
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
为什么放弃治疗
2013-11-7 12:41
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
2013-11-7 13:27
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我也是菜鸟,给你提个建议:有些API会自己分配内存却需要你调用其他API来释放的。报哪里内存泄漏了,就去查那个API的资料,说不行能找到相应的信息。
2013-11-12 16:28
0
游客
登录 | 注册 方可回帖
返回
//