例如内存泄露: Detected memory leaks! Dumping objects -> e:\vs工程\tests\testsdlg.cpp(101) : {118} normal block at 0x003BBAD8, 100 bytes long. Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD Object dump complete. !heap -x 0x003BBAD8 Entry User Heap Segment Size PrevSize Unused Flags ----------------------------------------------------------------------------- 003bbab0 003bbab8 003b0000 003b0640 a0 17f0 18 busy extra fill !heap -p -a 003bbab0 address 003bbab0 found in _HEAP @ 3b0000 HEAP_ENTRY Size Prev Flags UserPtr UserSize - state 003bbab0 0014 0000 [07] 003bbab8 00088 - (busy) Trace: 0357 7c98eed2 ntdll!RtlDebugAllocateHeap+0x000000e1 7c96b394 ntdll!RtlAllocateHeapSlowly+0x00000044 7c938f21 ntdll!RtlAllocateHeap+0x00000e64 1024db9c MSVCR80D!malloc_base+0x000000ec 1020faa5 MSVCR80D!malloc_dbg+0x000002d5 1020f839 MSVCR80D!malloc_dbg+0x00000069 1020f7ef MSVCR80D!malloc_dbg+0x0000001f 78332934 MFC80UD+0x00052934 783329b8 MFC80UD+0x000529b8 78332396 MFC80UD+0x00052396 4129ae tests!CtestsDlg::OnInitDialog+0x0000013e 7839bfae MFC80UD+0x000bbfae 77d18734 USER32!InternalCallWinProc+0x00000028 77d2413c USER32!UserCallDlgProcCheckWow+0x000000f0 77d23b30 USER32!DefDlgProcWorker+0x000000a8 77d23d5c USER32!DefDlgProcW+0x00000022 77d18734 USER32!InternalCallWinProc+0x00000028 77d18816 USER32!UserCallWinProcCheckWow+0x00000150 77d2a013 USER32!CallWindowProcAorW+0x00000098 77d2a039 USER32!CallWindowProcW+0x0000001b 7835e302 MFC80UD+0x0007e302 7835cb1b MFC80UD+0x0007cb1b 7839d393 MFC80UD+0x000bd393 7835fbf7 MFC80UD+0x0007fbf7 7835f3b0 MFC80UD+0x0007f3b0 7835c9be MFC80UD+0x0007c9be 7835ceb4 MFC80UD+0x0007ceb4 78358979 MFC80UD+0x00078979 77d18734 USER32!InternalCallWinProc+0x00000028 77d18816 USER32!UserCallWinProcCheckWow+0x00000150 77d2927b USER32!SendMessageWorker+0x000004a5 77d2651a USER32!InternalCreateDialog+0x000009df 其中4129ae 地址就是分配内存的地方,从而导致的内存泄露。 http://support.microsoft.com/kb/268343/zh-cn |