realloc liefert zu viel speicher
-
LordJaxom schrieb:
Weil C++ keine Abbildung von C mit neuen Worten ist. Für sich vergrößern wollende Felder gibt es so schöne Sachen wie std::vector<T>, die unter der Haube mit Allokatoren arbeiten die ähnliches wie realloc leisten dürften.
Der standardmäßig verwendete Allokator dürfte wohl auch bloß new und delete benutzen (ist bei mir mit g++ 4.1.2 so). Besitzt eine normale Allokatorklasse überhaupt die Fähigkeit des Vergrößern bzw. Verkleinerns des Speicherbereichs? Und selbst wenn, es werden sich so keine system- und compilerunabhängige Allokatoren mit dieser Fähigkeit schreiben lassen: Die müssten entweder auf Betriebssystemfunktionen oder auf realloc() + manuelles Aufrufen des Konstruktors zurückgreifen. Hab Allokatoren noch nie benutzt, also lasse ich mich gerne eines Besseren belehren. <nicht ganz ernst gemeinte ironie> Schön, dass wir nochmal eine Abstraktionsschicht für die Speicherverwaltung haben, damit können wir jetzt unsere Abstraktionsschicht für die Abstraktion der Abstraktion abstrahieren ;)</ironie>
-
Nur am Rande: Die Allokatoren trennen sowieso die Speicheranforderung und Konstruktion von Objekten in zwei getrennte Methoden. (und ein vector<> verbessert seine Performance idR, indem er mehr Speicher anfordert als er aktuell benötigt).
-
Ganz erlich, ich verwende so gut wie nie ein new[]. Eigentlich gar nicht. deswgen interessiere ich mihc eigentlich auhc nicht für eine realloc-Alternative.