Hallo
Wie kann ich so etwas:
int* pStructure = new int[1];
.. während der Laufzeit noch vergrössern, ohne einen vollkommen neuen Speicherbereich zu reservieren?
Einfach so, dass die vorhandenen Daten so bleiben wie sie sind und das Array noch etwas mehr Platz hat.
Ich möchte das nach Möglichkeit ohne std::vector machen.
Schon mal Danke!
Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge
Ich habe mir das mit den Zeigern aufgezeichnet, ganz begrieife ich es aber noch nicht.
Ich übergebe den Zeiger, der auf mein Array zeigt.
Dann kopiere ich die Daten aus dem Array in das neue.
Jetzt lösche ich das Array, auf das mein Zeiger zeigte.
Dem Zeiger gebe ich die Adresse der neuen Daten.
Im der Main.cpp habe ich aber immer noch den alten Zeiger auf den gelöschten Speicherbereich.
Passiert nicht genau das auch bei der Zeiger auf Zeiger Variante von dir?
Der Zeiger ändert sich immer noch nicht, oder doch?
Ich hab das jedenfalls mal so geänder, wie du es beschrieben hast, es funktioniert leider immer noch nicht.
Ich glaube aber, dass es noch gar nicht zu diesem Fehler kommt, sondern schon vorher was passiert.
Das Beispiel stürzt nämlich genau bei delete[] ab, dort wird ja noch nicht auf das zurückgegebene Array zugegriffen...
EDIT: ARGH, sorry!!
Ich hab die Parameter für Oldsize und NewSize verwechselt... *Kopf gegen die Wand hau*
Der erste Teil meiner Frage gilt aber noch ;-)
EDIT2: Ich sehe gerade, dass meine erste Variante auch funktioniert.
Wieso jetzt das?
Das mit dem nicht aktuellen Zeiger klang für mich doch auch ganz logisch!? Das kann doch eigentlich gar nicht gehen!
[Diese Nachricht wurde nachträglich bearbeitet.]