ist folgender code zulässig
-
char* buffer; new buffer[bla] delete [] buffer; // und jetz gleich nochmal aufm selben bufferso new buffer[bla]also in worten, zuerst buffer erstellen dann schließen und gleich wieder speicher anfordern
-
newdelnew schrieb:
also in worten, zuerst buffer erstellen dann schließen und gleich wieder speicher anfordern
Das ist aber nicht das, was du im Code machst.
char* buffer; // Deklariert nur einen Zeiger. new buffer[bla] // Wenn ; dastehen würde, gäbe es ein Memoryleak, da Speicher // angefordert wird, und kein Verweis darauf besteht delete [] buffer; // ungültig, da buffer auf keinen Array-Speicher zeigt new buffer[bla] // siehe oben
-
du weißt doch was ich meine
natürlich habe ich ihn der Hektik das buffer = und; vergessen. Aber ist es zulässig speicher anzufordern zu löschen und nochmal am gleichen buffer anzufordern?
-
Wieso musst du hetzen?

char* buffer = new char[bla]; delete[] buffer; buffer = new char[bla]; delete[] buffer;Ja, das ist gültig. Wieso sollte es nicht sein?
Allerdings ist es ziemlich nutzlos, wieso sollte man sowas machen? Sehe überhaupt keinen Sinn.Grüssli
-
newdelnew schrieb:
du weißt doch was ich meine
natürlich habe ich ihn der Hektik das buffer = und; vergessen.Ach, man sollte also immer davon ausgehen, dass es nur Flüchtigkeitsfehler waren und der Fragende es schon wissen wird? Du hättest dir 10 Sekunden mehr Zeit nehmen können, um solchen Missverständnissen vorzubeugen.

newdelnew schrieb:
Aber ist es zulässig speicher anzufordern zu löschen und nochmal am gleichen buffer anzufordern?
Ja.
-
Dravere schrieb:
Allerdings ist es ziemlich nutzlos, wieso sollte man sowas machen? Sehe überhaupt keinen Sinn.
Wenn man mit
char*arbeitet, wird man vielleicht irgendwann das Bedürfnis haben, seinen angeforderten Speicherbereich neu zu dimensionieren.
Zumindest unter der Annahme, dass es zwei verschiedene
blas sind. Wieder ein Grund mehr, sich ein bisschen Zeit für eine Fragestellung zu nehmen...
-
Nexus schrieb:
Dravere schrieb:
Allerdings ist es ziemlich nutzlos, wieso sollte man sowas machen? Sehe überhaupt keinen Sinn.
Wenn man mit
char*arbeitet, wird man vielleicht irgendwann das Bedürfnis haben, seinen angeforderten Speicherbereich neu zu dimensionieren.
So wie ich ihn/sie verstanden habe, ging es hier darum, wirklich alle 4 Schritte direkt hintereinander zu machen. Aber kann sein, dass ich das falsch verstanden habe.

Denn wenn es nicht direkt hintereinander ist, dann scheint da wohl ein gewisses Grundlagenwissen zu fehlen.Sollten wir vielleicht noch auf
std::vectorhinweisen? Na ich mach es jetzt mal:
http://www.cplusplus.com/reference/stl/vector/Nexus schrieb:
Zumindest unter der Annahme, dass es zwei verschiedene
blas sind. Wieder ein Grund mehr, sich ein bisschen Zeit für eine Fragestellung zu nehmen...ACK
Grüssli
-
Dravere schrieb:
Sollten wir vielleicht noch auf
std::vectorhinweisen?Wenn wir gerade dabei sind, sollte auch
std::stringerwähnt werden, welcher mehr auf Zeichenketten spezialisiert ist:
http://www.cplusplus.com/reference/string/string/