Освобождение памяти для двумерного массива - C (СИ)
Формулировка задачи:
В общем выделяю malloc`ом память для двумерного массива, проверяю, выделилась ли, если да, выполняю код, затем освобождаю, но почему-то выскакивает ошибка, необработанное исключение по адресу: МКАД 25ый киллометр
Помогите найти ошибку, вот код:
/* FIELD равно 10 */ int **map; map = (int **)malloc(FIELD * sizeof(int *)); for (i = 0; i < FIELD; i++) map[i] = (int *)malloc(FIELD * sizeof(int)); /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/ for (i = 0; i < FIELD; i++) free(map[i]); free(map);
Решение задачи: «Освобождение памяти для двумерного массива»
textual
Листинг программы
void AutoArrangementShips (int **Arr)
Объяснение кода листинга программы
- Входной параметр функции — указатель на двумерный массив
Arr
типаint**
. - Функция
AutoArrangementShips
не возвращает никакого значения. - В теле функции не идет никаких вычислений или операций с массивом
Arr
. - Поэтому можно предположить, что данная функция предназначена для освобождения памяти, выделенной под двумерный массив
Arr
. - Для освобождения памяти необходимо вызвать функцию
free()
для каждого из указателейArr
. - Но в данном коде функция
free()
не вызывается ни разу. - Поэтому можно предположить, что код был написан с ошибкой и не был доработан.
- Возможно, автор кода планировал написать в функции какие-то действия с массивом, но по какой-то причине этого не сделал.
- Если вызвать функцию
free()
для каждого из указателейArr
, то это приведет к освобождению памяти, выделенной под двумерный массивArr
. - Но в текущем виде код не выполняет никаких действий и не освобождает память.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д