Memory leak
-
Hallo zusammen,
ich habe mir eben gerade probehalber den Visual Leak Detector von der CodeProject-Seite runtergeladen. Im Gegensatz zur Windows-Anzeige (VS2005) liefert mir der VLD beim Programmbeenden 2 memory leaks und zwar immer wenn ich ein ActiveX in meine dialogbasierte Anwendung einbinde, und zwar auch schon, wenn ich im neuen Projekt nichts anderes mache als das ActiveX einzubinden.Mit _CrtSetBreakAlloc hab ich dann die Stelle ermittelt, an der das Ganze passiert:
INT_PTR nResponse = dlg.DoModal(); //Anwendungs-Assistenten generiert
und zwar genauer gesagt in CreateDialogIndirect, welche in der dlgcore.cpp aufgerufen wird. Ich hoffe, irgendjemnd kann mir helfen, das Problem zu lösen oder ermutigt mich, es zu ignorieren
, Danke im voraus
Gruss CatDog
Ach ja, den Text aus dem Ausgabe-Fenster:
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 96 at 0x003531F8: 124 bytes ----------
Call Stack:
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp (29): CPlex::Create
f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxtempl.h (914): CList<HWND__ *,HWND__ *>::NewNode
f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxtempl.h (961): CList<IControlSiteFactory *,IControlSiteFactory *>::AddHead
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (839): CControlSiteFactoryMgr::RegisterSiteFactory
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (791): CControlSiteFactoryMgr::CControlSiteFactoryMgr
f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxtls_.h (227): CProcessLocal<CControlSiteFactoryMgr>::CreateObject
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\afxtls.cpp (461): CProcessLocalObject::GetData
f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxtls_.h (213): CProcessLocal<CControlSiteFactoryMgr>::GetData
f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxtls_.h (222): CProcessLocal<CControlSiteFactoryMgr>::operator->
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (168): COccManager::CreateSite
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp (313): COleControlContainer::CreateControlCommon
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp (366): COleControlContainer::CreateControl
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp (286): COleControlContainer::CreateControl
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (718): COccManager::CreateDlgControl
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (490): COccManager::CreateDlgControls
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (399): COccManager::CreateDlgControls
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp (621): CDialog::HandleInitDialog
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp (2004): CWnd::OnWndMsg
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp (1741): CWnd::WindowProc
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp (240): AfxCallWndProc
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp (389): AfxWndProc
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\afxstate.cpp (407): AfxWndProcBase
0x7E368734 (File and line number not available): GetDC
0x7E368816 (File and line number not available): GetDC
0x7E36B89B (File and line number not available): GetParent
0x7E3743E0 (File and line number not available): GetWindowTextLengthW
0x7E374704 (File and line number not available): CreateDialogIndirectParamAorW
0x7E389B0B (File and line number not available): CreateDialogIndirectParamA
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp (307): CWnd::CreateDlgIndirect
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp (536): CDialog::DoModal
d:\uebung\leaktest\leaktest\leaktest\leaktest.cpp (66): CLeakTestApp::InitInstance
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\winmain.cpp (37): AfxWinMain
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\appmodul.cpp (29): WinMain
f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (578): __tmainCRTStartup
f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (403): WinMainCRTStartup
0x7C816FD7 (File and line number not available): RegisterWaitForInputIdle
Data:
00 00 00 00 00 00 00 00 00 00 00 00 F8 30 35 00 ........ .....05.
14 32 35 00 CD CD CD CD CD CD CD CD 20 32 35 00 .25..... .....25.
CD CD CD CD CD CD CD CD 2C 32 35 00 CD CD CD CD ........ ,25.....
CD CD CD CD 38 32 35 00 CD CD CD CD CD CD CD CD ....825. ........
44 32 35 00 CD CD CD CD CD CD CD CD 50 32 35 00 D25..... ....P25.
CD CD CD CD CD CD CD CD 5C 32 35 00 CD CD CD CD ........ \25.....
CD CD CD CD 68 32 35 00 CD CD CD CD CD CD CD CD ....h25. ........
00 00 00 00 CD CD CD CD CD CD CD CD ........ ........---------- Block 94 at 0x003530F8: 4 bytes ----------
Call Stack:
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (788): CControlSiteFactoryMgr::CControlSiteFactoryMgr
f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxtls_.h (227): CProcessLocal<CControlSiteFactoryMgr>::CreateObject
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\afxtls.cpp (461): CProcessLocalObject::GetData
f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxtls_.h (213): CProcessLocal<CControlSiteFactoryMgr>::GetData
f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxtls_.h (222): CProcessLocal<CControlSiteFactoryMgr>::operator->
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (168): COccManager::CreateSite
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp (313): COleControlContainer::CreateControlCommon
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp (366): COleControlContainer::CreateControl
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp (286): COleControlContainer::CreateControl
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (718): COccManager::CreateDlgControl
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (490): COccManager::CreateDlgControls
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp (399): COccManager::CreateDlgControls
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp (621): CDialog::HandleInitDialog
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp (2004): CWnd::OnWndMsg
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp (1741): CWnd::WindowProc
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp (240): AfxCallWndProc
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp (389): AfxWndProc
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\afxstate.cpp (407): AfxWndProcBase
0x7E368734 (File and line number not available): GetDC
0x7E368816 (File and line number not available): GetDC
0x7E36B89B (File and line number not available): GetParent
0x7E3743E0 (File and line number not available): GetWindowTextLengthW
0x7E374704 (File and line number not available): CreateDialogIndirectParamAorW
0x7E389B0B (File and line number not available): CreateDialogIndirectParamA
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp (307): CWnd::CreateDlgIndirect
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp (536): CDialog::DoModal
d:\uebung\leaktest\leaktest\leaktest\leaktest.cpp (66): CLeakTestApp::InitInstance
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\winmain.cpp (37): AfxWinMain
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\appmodul.cpp (29): WinMain
f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (578): __tmainCRTStartup
f:\rtm\vctools\crt_bld\self_x86\crt\src\crtexe.c (403): WinMainCRTStartup
0x7C816FD7 (File and line number not available): RegisterWaitForInputIdle
Data:
DC 3A 1F 78 .:.x.... ........Visual Leak Detector detected 2 memory leaks.
"LeakTest.exe": "C:\WINDOWS\system32\dbghelp.dll" entladen.
Visual Leak Detector is now exiting.
Das Programm "[3472] LeakTest.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.
-
Wenn es ein Memory-Leak-Problem in der dlgcore.cpp ist, würde ich es auf einen Irrtum seitens des Visual Leak Detectors schieben. Ist unwarscheinlich, dass dort ein Speicherleck existiert, denn somit müssten auch andere Programme anschlagen.
Der Memory Validator beharrt z.B. wehemend auf ein Speicherleck in der STL Implementation wenn man die Klasse std::basic_fstream<..> nutzt. Andere Tools schlagen hier nicht an.
-
Ich glaube inzwischen, dass es wirklich ein Fehler des VLD ist, da diese "memory leaks" beim Einbinden jedes ActiveX Controls erscheinen
Trotzdem Danke für die Mühe
Gruss CatDog