statisch allokierten Speicher wieder freigeben...
-
Hi, gibt es eine Möglichkeit statisch allokierten Speicher eines C-String zu re-allokieren, um die Größe anzupassen ? (Ich kann die Klasse std::string nicht verwenden!)
-
Nein, dies ist nicht möglich. Wenn du schon std::string nicht verwenden kannst, könntest du dann den C-String dynamisch allokieren? Auch nicht, oder?
-
Hi,
Ja das hab ich mit folgender Zeile versucht, aber dabei stürzt er ab:
static char* pszData = new char[213];Wenn ich dann mit
delete [] pszData;
bzw.
pszData = new char[1000];
reallokiere, krackt es.Danke schonmal!
-
ist das ne globale variable und wird sie irgendwie im konstruktor von anderen globalen objekten verwendet? dann könnte es sein, daß das andere objet *vor* deinem speicher angelegt wird.
-
Hm ne...aber theoretisch kann ich also einen Zeiger den ich so definiert hab:
static char* pszData;so oft neu allokieren wie ich will (erst delete [] danach new char[] ) , oder ?
-
Del schrieb:
Hm ne...aber theoretisch kann ich also einen Zeiger den ich so definiert hab:
static char* pszData;
so oft neu allokieren wie ich will (erst delete [] danach new char[] ) , oder ?jup.
-
Allerdings solltest du beachten, daß bei dieser Aktion die bisher vorhandenen Daten nicht kopiert werden (und leider bietet C++ auch kein Äquivalent zu realloc() an). Wenn du die Daten noch brauchst, mußt du sie vorher umkopieren:
char* tmp = new char[new_size]; memcpy(tmp,pszData,min(old_size,new_size)); delete[]pszData; pszData=tmp;