löschen von array of chars (string) schlägt fehl
-
Hallo also ich definniere im Code einen String:
char* help_string = new char[9];
help_string = "Ressource";diesen string will ich nach nutzung löschen, aber:
delete []help_string;
oder nur:
delete help_string;schlägt in VS 2008 fehl (schaden am heap)
weiss jemand rat?
der string char wird in einer funktion genutzt, ist nach ablauf der funktion der speicher vielleicht automatisch freigegeben.
grüße und dank
-
Hallo
Als erstes bitte benutzte doch die C++-Tags, damit kann man den Quellcode einfacher lessen.
Und ja dein Problem liegt an dieser stelle:
greenghecco schrieb:
Hallo also ich definniere im Code einen String:
char* help_string = new char[9]; help_string = "Ressource"; // Hier verschiebst du deinen Pointer auf einen Konstanten BereichMit der Zuweisung verschiebst du den Pointer und kopierst nicht wie du wahrscheinlich vorhattest.
Damit generierst du auch noch zusätzlich ein Speicherleck, da du nach der Zweisung auch die Addresse
zu deinen Dynamisch erzeugten Speicher "vergessen" hast.Das kopieren müsste dann so ausschauen:
strncpy( help_string, "Ressource", 8 );Dann kannst du auch wieder ganz normal mit
delete []help_string;dein Char-Array löschen
Mfg Marco
-
super vielen dank für die erklärung.
Ist das mit der 8 nur n tippfehler?
-
Jap
Tippfehler sollte ne 9 sein, wobei ein strlen(const char*) noch einfacher wäre. Nur macht dies bei Konstanten
keinen Sinn sonst hast diese ja gleich 2 mal drin.Mfg marco
-
Benutze einfach std::string.