Освобождение памяти для двумерного массива - 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)

Объяснение кода листинга программы

  1. Входной параметр функции — указатель на двумерный массив Arr типа int**.
  2. Функция AutoArrangementShips не возвращает никакого значения.
  3. В теле функции не идет никаких вычислений или операций с массивом Arr.
  4. Поэтому можно предположить, что данная функция предназначена для освобождения памяти, выделенной под двумерный массив Arr.
  5. Для освобождения памяти необходимо вызвать функцию free() для каждого из указателей Arr.
  6. Но в данном коде функция free() не вызывается ни разу.
  7. Поэтому можно предположить, что код был написан с ошибкой и не был доработан.
  8. Возможно, автор кода планировал написать в функции какие-то действия с массивом, но по какой-то причине этого не сделал.
  9. Если вызвать функцию free() для каждого из указателей Arr, то это приведет к освобождению памяти, выделенной под двумерный массив Arr.
  10. Но в текущем виде код не выполняет никаких действий и не освобождает память.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы