Bei einem Zeiger eines CObArray wird der Speicher nach dem
löschen nicht freigegeben. Ein Beispiel:
Du gehst davon aus, dass das CObArray im Destruktor alle Elemente die es enthält löscht, das tut es aber vermutlich nicht. D. h. du mußt die Elemente selber löschen, und dann erst das CObArray.
Du gehst davon aus, dass das CObArray im Destruktor alle
Elemente die es enthält löscht, das tut es aber vermutlich
nicht. D. h. du mußt die Elemente selber löschen, und dann
erst das CObArray.
Habe ich ebenfalls versucht. Beim Beenden des Programs wird diese Funktion ausgeführt:
try
{
int iSize = oArray->GetSize();
for (int iPos=0; iPosGetAt(iPos);
delete Daten;
Daten = NULL;
oArray->RemoveAt(iPos);
}
Habe ich ebenfalls versucht. Beim Beenden des Programs wird
diese Funktion ausgeführt:
Ich schick dir mal per EMail ein Header-File das dir beim Suchen helfen kann.
Das File bindest du einfach ein, es „überschreibt“ die Operatoren new und delete durch eigene Implementierungen die Debug-Infos u. ä. ausgeben, bzw. auch beim zählen helfen wer wann wo Speicher allokiert hat und welcher wieder freigegeben wurde.
Schau einfach mal rein, dürfte relativ selbsterklärend sein.
Eine Website zu dem Thema ist: http://www.flipcode.com/tutorials/tut_memleak.shtml. Der Code der dort verwendet wird ist zwar nicht derselbe wie in dem Header-File das ich dir schicke, aber das Konzept ist dasselbe.
beim löschen von oArray werden die eingehängten Objekte nicht gelöscht, delete(oArray) löscht nur das Arrayobjekt, nicht die anderen 500000 mit new angelegten Objekte.