Probleme mit delete/free in Verbindung mit strcpy(...)
-
Hallo!!
Ich habe folgendes Problem in der unten stehenden Funktion:
char* strstr_case(char* string, char* search) { //Wie strstr, aber ohne Beachtung der Groß- und Kleinschreibung!! char* search2, *string2; char* strpointer; search2 = new char[strlen(search)]; string2 = new char[strlen(string)]; strcpy(search2,search); strcpy(string2,string); //Convert to lowercase _strlwr(search2); _strlwr(string2); //Vergleich strpointer=strstr(string2,search2); //strpointer auf string beziehen if(strpointer!=NULL) strpointer=string+(strpointer-string2); delete search2; delete string2; return strpointer; }Zur Laufzeit kommt an der stelle delete search2 folgende Fehlermeldung:
http://www.dmgames.de/Fehler.JPG
Der Fehler tritt nicht auf, wenn ich entweder die beiden deletes oder alle Stringfunktionen auskommentiere!!
Ich kann mir das absolut nicht erklären!!

Ich hoffe, es kann mir jemand helfen!!
-
delete[]
Gruß
-
Du allozierst ein Byte zu wenig ('\0' kommt dort rein).
-
Jo, das wars!!!
Das verdammte Terminierungszeichen, das vergisst man auch zu leicht!!
Ich danke euch!!
-
Achso, noch ne Frage zu der ersten Antwort:
Muss ich, wenn ich mit new zB ein Array von 5 Elementen alloziere, dann auch
delete[5] aufrufen, oder reicht da delete??
-
delete[] sollst du aufrufen. Immer wenn du beim new eckige Klammern verwendet hast, musst du das auch beim delete.
-
siehe hier:
FireFlow schrieb:
delete[]
Hab mal irgendwo (hier im Forum?) gelesen, dass man früher (vor Standard-Zeiten?)
angeben musste, wie viele Bytes freigegeben werdens sollen.Zusammenfassung:
new -> delete new[x] -> delete[]edit: zu spät
-
Gut, dann weiß ich jetzt bescheid!!
Danke!