new und achliessendes delete verursachen Fehler! Warum?
-
Hallo NG,
ich habe folgende KLasse:in der *.h
class test { test (); ~test (); CalculatePoints (); ... CPoint* m_pPoints; }in der *.cpp
test::test () { m_pPoints = NULL; } test::~test () { if (m_pPoints) delete pPoints; } test:CalculatePoints () { ... m_pPoints = new CPoint[i]; // int i wird vorher berechnet unt ist z.B. = 4 ... }Wenn nun der Destruktor aufgerufen wird kommt beim delete folgende Fehlermeldung:
Debug Error!
DAMAGE: after Normal block (#577) at ....Woran liegt das?
m_pPoints soll ein dynamisches Array auf CPoint-Objekte sein. Liegt das an der Deklaration von m_pPoints? Irgendwie sehe ich vor lauter Bäumen den Wald nicht mehr.Im voraus schon Mal danke für jede Hilfe,
-
test::~test () { if (m_pPoints) delete[] pPoints; }
-
behebt das Problem nicht.
Trotzdem Danke für Deine Antwort
-
Schreibst du vielleicht über die Arraygrenzen hinaus?
-
Ich nehme an, bei dir steht m_pPoints statt pPoints hinter dem delete ?
-
Entschuldigung für den Tippfehler, natürlich steht das m_pPoints. Ich schreibe auch nicht über die Arraygrenze hinaus. Was heißt diese Fehlermeldung denn überhaupt?
Bin am verzweifeln!!!Danke für die schnellen Antworten,
Christian
-
Sie riecht nach Buffer Overflow, weshalb ich auch gefragt hatte.
-
Schäm' er sich! http://spotlight.de/zforen/cpp/m/cpp-1061840880-21063.html

-
Die haben dort aber das Gleiche gesagt wie wir.
-
m_pPoints = new CPoint[i]; // int i wird vorher berechnet unt ist z.B. = 4
Zugriff nur mit den werten von 0,1,2,3 erlaubt(4 Zahlen ---> zugriff max. mit i-1)
Kannst du mal die Methode CalculatePoints() posten!
-
Ich habe ein Element mehr im Array gespeichert als Speicher allokiert wurde. Schön doof nicht war? Wenn mir das bisher schon mal passiert ist hatte das in der Regel einen Absturz des Programms zur folge. Diese Fehlermeldung war mir neu.

Nochmals Danke an alle für Eure Hilfe,
Christian