Debuging - Speicherleck
-
Hi!
Bietet das VC++ eingentlich irgend welche Tools an, die einem die Suche nach nem Speicherleck erleichtern?
Ich weiss nicht genau wie ich das wohl am besten angehe. Wo das Problem ist, weiss so ungefähr, aber hab eben die Stelle noch nicht gefunden... Hat VC++ da was? Anzeige des benötigten Arbeitsspeichers (der Taskmanager ist zu ungenau), Größe des Heaps,... was weiss ich....
-
Naja, so genau weis ich es auch nicht...
Aber ich arbeite meistens mit Messageboxen um die Codestelle
zufinden. Das funktioniert meistens auch recht raschDevil
-
Ja sicher gibt's da was. Für's Gröbste gibt es _CrtDumpMemoryLeaks(), einfach am Programmende aufrufen, wenn der Speicher freigegeben sein sollte (Das wird bei MFC anwendungen allerdings automatisch gemacht).
Dann gibt's noch _CrtSetBreakAlloc, das hilft, wenn man mal ein Speicherleck gefunden hat, zusätzlich sollte man noch malloc (bzw. calloc entsprechend) als malloc_dbg(size, _NORMAL_BLOCK, __FILE__, __LINE__) in irgendeinem Header umdefinieren, dann steht bei Speicherlecks immer gleich Datei und Zeilennummer.
Für GDI-Ressourcen muss man sich dagegen schon was einfallen lassen.... http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag01/html/leaks.asp
Dann gibt's da auch noch spezielle Software, die sich zwischen Anwendung und API einhängt und alle Aufrufe kontrolliert, aber da hab ich leider den Namen vergessen
Grüße
-
StressUtility für GDI lecks.
-
thx schon mal, werde mir alles ansehen