In C (oder C++) frage ich mich, ob es möglich ist, einen Speicherblock teilweise freizugeben.Ist es möglich, Speicher teilweise freizugeben?
Beispiel: Angenommen, wir eine Reihe von ganzen Zahlen a
der Größe 100, erstellen
int * a = malloc(sizeof(int)*100);
und dann später wollen wir a
so skalieren, dass es 20 ints hält statt 100.
Gibt es eine Möglichkeit, nur die letzten 80 * sizeof (int) Bytes von a
freizugeben? Wenn wir zum Beispiel realloc aufrufen, wird es das automatisch tun?
Realloc nicht kopieren das Array und dann das Original frei? – Cam
@Cam, nein. Es ist erlaubt (und wird oft) die bestehende Region zu verkleinern. –
@ watson1180: Richtig, aber das allein bedeutet nichts. Im Prinzip könnte Realloc implementiert werden, um O (n!^99) Zeit zu nehmen und immer das 500-fache des notwendigen Speichers zuzuteilen, aber wir berücksichtigen das bei Entscheidungen, die Realloc betreffen, nicht. – Cam