2016-07-29 15 views
0

Ich arbeite mit Visual Studio 2013 (C++) und bin in einigen Speicherlecks ausgeführt. Da ich mit mehreren DLLs arbeite, habe ich mich gefragt, ob es möglich war zu sehen, welche DLL wie viel Speicher zuweist.Wie zu ermitteln whcih dynamisch geladene Bibliothek verursacht Speicherverlust

+1

Bietet 'MSVC' keine Profilerwerkzeuge? Sogar 'QtCreator' macht das. –

+0

Speicher ist eine Prozessressource, sie gehört nicht zu einem Modul. Die meisten Dienstprogramme zur Diagnose von Speicherlecks versuchen, die Stack-Trace der Zuweisung zu erfassen, um dem Programmierer zu helfen, die Ursache zu beheben, sollte dies offensichtlich machen. Umhd.exe unter Windows. –

Antwort

1

Visual Studio 2015 hat großartige Profiling-Tools (besser als Visual Studio 2013), wenn Sie können, wechseln Sie dazu, sonst Process Explorer kann tun, was Sie brauchen. Um die Heap-Größen zu sehen, überprüfen Sie die View -> Show Lower Pane und überprüfen Sie View -> Lower Pane View -> DLLs und dann, wenn Sie auf einen Prozess klicken, zeigt der untere Bereich alle geladenen DLLs. Dann können Sie Select Columns in der Kopfzeile der unteren Fensterspalte verwenden, um die privaten Bytes anzuzeigen. Beispiel Screenshot: enter image description here

0

Versuchen Sie es mit _CrtDumpMemoryLeaks()

Obwohl es nur in Debug Version

0

Einer meiner Lieblings-Tools für die Speicherzuweisung Analyse funktioniert, ist MemTrack: http://www.almostinfinite.com/memtrack.html

Es ist sehr einfach einzurichten und zu verwenden und bietet detaillierte Aufschlüsselungen von Speicher/Blöcke pro Klasse zugeordnet.