Подтвердить что ты не робот

Как освободить память из массива char в C

Я создал массив char следующим образом:

char arr[3] = "bo";

Как освободить память, связанную с массивом я с именем "arr"?

4b9b3361

Ответ 1

Локальные переменные автоматически освобождаются, когда функция заканчивается, вам не нужно освобождать их самостоятельно. Вы освобождаете только динамически выделенную память (например, используя malloc), как она выделяется в куче:

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

Подробнее о распределении динамической памяти: http://en.wikipedia.org/wiki/C_dynamic_memory_allocation

Ответ 2

Вы ничего не освобождаете. Поскольку вы никогда не приобретали какие-либо ресурсы динамически, вам ничего не нужно или даже разрешено бесплатно.

(Точно так же, как вы говорите int n = 10;: не задействованы динамические ресурсы, которыми вы должны управлять вручную.)

Ответ 3

Память, связанная с arr, автоматически освобождается, когда arr выходит за пределы области видимости. Это либо локальная переменная, либо выделено статически, но она не динамически распределена.

Простым правилом для вас является то, что вы должны только каждый вызов free() указатель, который был возвращен вызовом malloc, calloc или realloc.