Освобождение памяти для двумерного массива - 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. - Но в текущем виде код не выполняет никаких действий и не освобождает память.