Laufzeitfehler: Heap Corruption (end of heap buffer)
-
Hallo!
void MyString::CreateNewString(const char* str) { char* newstr = new char[GetStringLength(str)]; for (int i=0; i<=GetStringLength(str); i++) *(newstr+i) = *(str+i); delete [] TheString; TheString = newstr; }TheString ist eine Membervariable und GetStringLength eine Memberfunktion von MyString.
Sobald ich die Methode ein zweites mal ausfuehre (beim ersten mal klappts) krieg ich den Laufzeitfehler. Wenn ich delete [] TheString jedoch ganz weglasse funktioniert alles einwandfrei - allerdings gebe ich den Speicher nicht mehr frei und das moechte ich natuerlich nicht.
Was ist hier falsch?moah, ich bin frustriert, ich komm einfach nicht drauf.

Gruss
Cartman
-
Sollte es vielleicht i<GetStringLength(str) statt i<=GetStringLength(str) heißen?
-
feigling schrieb:
Sollte es vielleicht i<GetStringLength(str) statt i<=GetStringLength(str) heißen?
So funktioniert es zwar ohne Laufzeitfehler, aber es fehlt jetzt das Nullzeichen, was aergerlich bei Ausgabe mit std::cout ist...

//edit
okay, habs rausgefunden... hab bei der Speicherbeschaffung das Nullzeichen nicht miteinberechnet... thx feigling