So geben Sie Speicher aus einem Char-Array in C frei

Lesezeit: 1 Minute

Benutzeravatar von AbhishekSaha
AbhishekSaha

Ich habe ein Char-Array wie folgt erstellt:

char arr[3] = "bo";

Wie gebe ich den Speicher frei, der dem Array mit dem Namen “arr” zugeordnet ist?

  • Sie sollten dies als deklarieren char arr[] = "bo" damit der Compiler die Länge berechnen kann und so sicherstellen, dass genügend Platz für ein Null-Terminator vorhanden ist. Wenn Sie Ihren Code in geändert haben char arr[3] = "boo"; dann gäbe es kein Null-Terminator.

    – David Heffernan

    2. Februar 2014 um 17:27 Uhr

Benutzeravatar von rullof
rullof

Lokale Variablen werden automatisch freigegeben, wenn die Funktion endet, Sie müssen sie nicht selbst freigeben. Sie geben nur dynamisch zugewiesenen Speicher frei (z. B. mit malloc) wie es auf dem Heap zugewiesen ist:

char *arr = malloc(3 * sizeof(char));
strcpy(arr, "bo");
// ...
free(arr);

Mehr zur dynamischen Speicherzuweisung: http://en.wikipedia.org/wiki/C_dynamic_memory_allocation

Du gibst überhaupt nichts frei. Da Sie niemals Ressourcen dynamisch erworben haben, müssen oder dürfen Sie nichts freigeben.

(Es ist dasselbe wie wenn du sagst int n = 10;: Es sind keine dynamischen Ressourcen beteiligt, die Sie manuell verwalten müssen.)

Die Erinnerung verbunden mit arr wird automatisch freigegeben, wenn arr geht aus dem Rahmen. Es ist entweder eine lokale Variable oder statisch zugewiesen, aber nicht dynamisch zugewiesen.

Eine einfache Regel, die Sie befolgen müssen, ist, dass Sie nur jeden Anruf tätigen müssen free() auf einem Zeiger, der von einem Aufruf von zurückgegeben wurde malloc, calloc oder realloc.

Benutzeravatar von Ramkumar lodhi
Ramkumar Lodhi

char arr[3] = "bo";

Das arr bringt den Speicher in das Stapelsegment. welches automatisch frei wird, wenn arr den Gültigkeitsbereich verlässt.

1397900cookie-checkSo geben Sie Speicher aus einem Char-Array in C frei

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy