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.934 Themen, 20.613 Beiträge
Wenn deine sorge ist, dass sich dabei der zeiger "pStructure" ändert, dann hast du vermutlich keine chance, eine stabile lösung zu bekommen, wenn das aber nicht das problem ist, dann kannst du mit z.b.:
int *newP=new int[newsize];
for(int i=0;i<oldsize;i++) newP[i]=pStructure[i];
//bzw. in unkritischen fällen wie hier,
//wo keine internen adressen angepasst werden müssen
memcpy(newP, pStructure, sizeof(int)*oldsize);
delete[] pStructure;
pStructure=newP;
Die größe anpassen (neben newsize muss dann aber auch oldsize bekannt sein).
mr.escape