Krautkanal.com

Veröffentlicht am 2014-12-04 09:35:44 in /prog/

/prog/ 6151: Hallo /prog/, mein IDE identifiziert Heap Leaks in m...

ma_tiax Avatar
ma_tiax:#6151

Hallo /prog/,

mein IDE identifiziert Heap Leaks in meinem Programm, die immer auftauchen, wenn ich folgende Funktion benutze. Ich kann jedoch rein gar nichts entdecken. Hilfe?

http://pastebin.com/z3uXkbnL

im_jsmith Avatar
im_jsmith:#6152

>>6151
Ich will dir nicht zu nahe treten, aber du solltest dir generell nochmal die C++ Grundlagen anschauen.
Zur Sache: Dein Fehler ist, dass du die Zeiger auf null setzt, bevor du delete auf den Zeiger aufrufst.
Für delete muss der Zeiger noch die Adresse gespeichert haben. Da du aber die Adresse verwirfst, indem du den Zeiger auf NULL setzt, weis delete nicht wo der Speicher ist den es freigeben soll.

Hoffe ich konnte dir helfen.

umurgdk Avatar
umurgdk:#6153

>>6152

Das hatte ich mir vorher auch gedacht, allerdings bekomme ich wenn ich die null Setzungen entferne eine Access Violation (Exception: C0000005 at 00405ED2 EXCEPTION_ACCESS_VIOLATION reading at 65657246).

garand Avatar
garand:#6154

>>6153
Dann ist entweder irgendwas nicht richtig/erfolgreich initialisiert worden oder du löschst eine Variable mehrfach.

johnriordan Avatar
johnriordan:#6157

>>6153
Versuch mal zu identifizieren wo die Exception geworfen wird.

starburst1977 Avatar
starburst1977:#6174

Darf man fragen wofür du die pointer für itl, patientID, progressDates und progList anlegst? Alle zeigen doch auf patlist was vermutlich als referenz übergeben wird. Wenn dem so ist solltest du dann patlist auch wieder in der Funktion deleten in der du zeitraum_tabelle aufrufst.

Wenn man sich allerdings

Items *findProgress = new Items("DATE", "", 0, 0, "", "", NULL, mSTRING, EXISTS);
findProgress = NULL;
delete findProgress;

ansieht scheinst du doch ein anderes problem zu haben. Wenn hier schon ohne = NULL exceptions geschmissen werden läuft da etwas generell falsch.

orkuncaylar Avatar
orkuncaylar:#6274

Zeig mal den Destuctor von Items.

Neuste Fäden in diesem Brett: