Speicher erweitern mit new

thekiller

Viceinator
Hallo,

ich versuche gerade irgendwie die realloc funktion aus zu mit c++ mitteln zu realisieren aber es gelingt mir einfach nicht.
Folgendes habe ich probiert.

Codeausschnitt:
C++:
/*
.
.
.
*/
UINT uiNum = 0;
CSocketInst = new CSocket;
/*
.
.
.
*/
CSocketInst = new CSocket[uiNum + 1];
/*
.
.
.
*/

Damit wird wohl aber einfach nur irgendwo neuer Speicher allokiert und der Speicher der ersten reservierung geht verloren nehme ich an. Jedenfalls scheint es so nicht zu gehen.
Ich habe gelesen, dass man mein "Problem" mit verketteten Listen realisieren kann aber ich fände es etwas umständlich meinen Source dem jetzt so anzupassen.
Gibt es keine C-ähnlichere Variante?
Danke schonmal

LG Manuel
 
Zuletzt bearbeitet von einem Moderator:
Hi.
Hallo,

ich versuche gerade irgendwie die realloc funktion aus zu mit c++ mitteln zu realisieren aber es gelingt mir einfach nicht.

Folgendes habe ich probiert.

Codeausschnitt:
C++:
/*
.
.
.
*/
UINT uiNum = 0;
CSocketInst = new CSocket;
/*
.
.
.
*/
CSocketInst = new CSocket[uiNum + 1];
/*
.
.
.
*/
Du kannst nicht den new und den new[] Operator mischen.
Damit wird wohl aber einfach nur irgendwo neuer Speicher allokiert und der Speicher der ersten reservierung geht verloren
Selbstverständlich.
Ich habe gelesen, dass man mein "Problem" mit verketteten Listen realisieren kann aber ich fände es etwas umständlich meinen Source dem jetzt so anzupassen.
Du solltest von Anfang an Standardkontainer der STL verwenden. Die kann man dann auch (fast) beliebig gegeneinander austauschen.
Gibt es keine C-ähnlichere Variante?
realloc macht im Grunde (im ungünstigsten Fall) auch nichts anderes als einen neuen größeren Speicherblock zu allozieren, die Daten vom alten Speicherblock zu kopieren und den alten Speicherblock freizugeben. Deswegen sollte man auch realloc möglichst vermeiden.

Genau das kannst du auch in C++ machen.

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Zurück