realloc() Misserfolgs-Frage.
-
Was geschieht eigentlich, wenn realloc() fehlschlägt, mit dem 'alten' Speicherbereich:
char* NeuerBereich = NULL; char* AlterBereich = (char*) malloc(512 * sizeof(char)); /* Angenommen der Alte Bereich wurde erfolgreich allokiert */ /* ... */ NeuerBereich = (char*) realloc(AlterBereich, 2000000000); /* --> Und hier nehme ich an, dass realloc() fehlschlägt und 'NULL' zurueckgibt <-- */
Ist nach so einem Fehlschlag von realloc() auch der Inhalt von 'AlterBereich' verloren, d.h. womöglich führt dann auch z.B.
free(AlterBereich)
zu einem unerlaubten Löschversuch? Oder berührt dieser realloc()-Fehlschlag meinen 'alten' Speicherbereich überhaupt nicht?
-
Laut dem Standard C89 wird das alte Objekt dann nicht verändert und du erhältst einen NULL Pointer zurück.
-