In C (oder C ++) frage ich mich, ob es möglich ist, einen Speicherblock teilweise freizugeben.
Angenommen, wir erstellen ein Array mit Ganzzahlen a
der Größe 100,
und später wollen wir die Größe von a
so ändern, dass sie 20 anstatt 100 enthält.
Gibt es eine Möglichkeit, nur die letzten 80 * sizeof (int) Bytes von a
freizugeben? Zum Beispiel, wenn wir realloc aufrufen, wird es das automatisch tun?
Ich würde lieber ein std::vector
verwenden. Aktivieren wir C ++ 0x:
Ab n3092 (nicht der endgültige Entwurf, ich brauche eine neue Kopie auf diesem PC):
void shrink_to_fit();
Hinweise: shrink_to_fit
ist eine nicht bindende Anforderung, um die Speicherbelegung zu reduzieren. [Hinweis: Die Anfrage ist nicht bindend, um den Spielraum für implementierungsspezifische Optimierungen zu ermöglichen. -Hinweis]