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

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

char arr[3] = "bo";

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

Решение

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

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

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

Комментарии (0)

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

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

Комментарии (0)

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

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

Комментарии (0)