Hallo,
bei meinem Programm kommt es zu geringen Speicherblockverlusten. Dabei werden vermutlich mit new erzeugte Objekte nicht wieder freigegeben.
Ich habe früher VLD benutzt, aber scheinbar geht es nicht mit VS 2019...Was benutzt ihr um solche Probleme zu beheben ?
Memory Leak Detection
-
- Establishment
- Beiträge: 255
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Memory Leak Detection
Hat den StormWizard 1.0 und 2.0 verbrochen. http://www.mirrorcad.com
Re: Memory Leak Detection
Du kannst das hier mal versuchen, das hat mir schon oft geholfen:
https://docs.microsoft.com/en-us/visual ... ew=vs-2019
Ich selbst habe für VS auch nichts wirklich Gutes finden können.
Ist aber bei mir nicht wirklich schlimm, weil ich einfach vermeide, new oder malloc zu verwenden.
Stattdessen kann man Allokatoren verwenden, da kann man dann meistens die Leaks leicht finden.
Oder natürlich die klassischen unique_ptr bzw. shared_ptr.
Ich teile meinen Code einfach auf in "Low-Level" Teile und höhere Abstraktionen, dann hat man nur wenige Stellen wo überhaupt Leaks entstehen können.
Zudem schreibe ich Software meistens cross-platform, dann kann ich auch valgrind usw benutzen.
Das Ganze hilft natürlich nicht bei gewachsenen, ungepflegten Projekten.
https://docs.microsoft.com/en-us/visual ... ew=vs-2019
Ich selbst habe für VS auch nichts wirklich Gutes finden können.
Ist aber bei mir nicht wirklich schlimm, weil ich einfach vermeide, new oder malloc zu verwenden.
Stattdessen kann man Allokatoren verwenden, da kann man dann meistens die Leaks leicht finden.
Oder natürlich die klassischen unique_ptr bzw. shared_ptr.
Ich teile meinen Code einfach auf in "Low-Level" Teile und höhere Abstraktionen, dann hat man nur wenige Stellen wo überhaupt Leaks entstehen können.
Zudem schreibe ich Software meistens cross-platform, dann kann ich auch valgrind usw benutzen.
Das Ganze hilft natürlich nicht bei gewachsenen, ungepflegten Projekten.
-
- Establishment
- Beiträge: 255
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Re: Memory Leak Detection
Ich habe das schon ausprobiert. Er zeigt mir aber nicht die Zeile und die Datei und das obwohl ich das
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
in meine Hauptinclude Datei ( nicht stdafx.h ) eingegeben habe. Aus irgendeinem Grund fehlen diese wichtigen Angaben,
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
in meine Hauptinclude Datei ( nicht stdafx.h ) eingegeben habe. Aus irgendeinem Grund fehlen diese wichtigen Angaben,
Hat den StormWizard 1.0 und 2.0 verbrochen. http://www.mirrorcad.com
Re: Memory Leak Detection
:-(
Ist bei mir leider auch schon ein paar Jahre her, dass ich das benutzt habe... aktuell bin ich unter Linux und kanns leider nicht probieren.
Jemand anderes Erfahrungen damit?
Ist bei mir leider auch schon ein paar Jahre her, dass ich das benutzt habe... aktuell bin ich unter Linux und kanns leider nicht probieren.
Jemand anderes Erfahrungen damit?
- Krishty
- Establishment
- Beiträge: 8250
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Memory Leak Detection
Gibt das _CRTDBG_MAP_ALLOC mal in den Präprozessor-Einstellungen deines Projekts an, statt in einzelnen Quelldateien.
-
- Establishment
- Beiträge: 255
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Re: Memory Leak Detection
Das Eingeben in die Präprozessor-Einstellungen hat teilweise Erfolg gehabt. Ich habe jetzt noch 2 zusätzliche Leaks. Bei denen zeigt er die Zeile und den Dateinamen an, aber nicht bei mit new allozierten Objekten.
Hat den StormWizard 1.0 und 2.0 verbrochen. http://www.mirrorcad.com
Re: Memory Leak Detection
Ich habe mehrmals erfolgreich Dr. Memory benutzt um Speicherzugriffsfehler zu finden (insbesondere uninitialized reads). Es kann aber eben auch Memory-Leaks finden. Man muss ein wenig auf die Kompilereinstellungen achten und vermutlich einige Filter erzeugen um false Positives aufzuräumen, aber ich fand den Aufwand für den Nutzer sehr vertretbar:
https://drmemory.org/
https://drmemory.org/
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
-
- Establishment
- Beiträge: 255
- Registriert: 25.08.2019, 05:00
- Alter Benutzername: gdsWizard
- Kontaktdaten:
Re: Memory Leak Detection
Danker für den Link. Ich habe Dr.Memory auch mittels Google gefunden gehabt. Ich habe aber gestern mit der Deleaker Demo Erfolg gehabt. Die Demo Version hat zwar die Zeile nicht angezeigt, aber in dem Quelltext hatte ich nur im Konstruktor ein anderes Objekt mittels new erzeugt.
Leider ist Deleaker relativ teuer.
Leider ist Deleaker relativ teuer.
Hat den StormWizard 1.0 und 2.0 verbrochen. http://www.mirrorcad.com