realloc in C++ ? Langsam? Schlecht?
-
Hallo,
ich habe im Prinzip folgendes, der code ist vereinfacht also bitte nicht dran aufhängen:
int * a = new int[3];ich würde gerne so einen Heap-Bereich vergrössern. Da ich auf schnelligkeit achte frage ich mich ob realloc langsamer wäre als z.B den heap freizugeben und dann erneut zu füllen. Also vom prinzip vielleicht einfach einen neuen heap anzulegen und den pointer umbiegen und dann den anderen irgendwie wieder löschen.
Sollte man evtl. prinzipiell realloc vermeiden?
Es handelt sich hierbei "nur" um ein int array.
-
Benutze std::vector statt einem nakten Array.
realloc erzeugt eine direkte Kopie des Speichers, d.h. du kannst nur PODs oder built-ins benutzen (bei int also kein Problem).
realloc ist weder langsam noch schlecht, erst ein bestimmer Anwendungsfall macht es schlecht/langsam.
-
In dem Fall kannst du realloc ohnehin nicht verwenden (genau so wenig wie du free benutzen kannst). Mische niemals C- und C++-Style Speicher Allozierung!
Ansonsten ist realloc schlecht, da es keinen Konstruktor Aufruf tätigt (in dem Fall zwar nicht nötig).
Nimm am besten einfach std::vector (wie schon vorgeschlagen)