Ошибка сегментации при выводе графа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вечер добрый, г-да программисты! Ниже приведены фрагменты из программы, описывающей и выводящей граф. В начале программы динамически выделяю память под две числовые матрицы и один массив указателей на структуры:
Листинг программы
  1. MS = (int**) malloc(sizeof(int*)*N);
  2. MI = (int**) malloc(sizeof(int*)*e);
  3. hole = (lnk*) malloc(sizeof(lnk)*N);
  4. for (i=0; i<N; i++){
  5. MS[i] = (int*) calloc(N, sizeof(int));
  6. hole[i]=NULL;
  7. }
  8. for (i=0; i<e; i++)
  9. MI[i] = (int*) calloc(N, sizeof(int));
Далее, необходимо перераспределить память, что я осуществил таким образом:
Листинг программы
  1. MS = (int**) realloc(MS, sizeof(int*)*N);
  2. MI = (int**) realloc(MI, sizeof(int*)*e);
  3. hole = (lnk*) realloc(hole, sizeof(lnk)*N);
  4. for (i=0; i<N; i++){
  5. MS[i] = (int*) realloc(MS[i], N*sizeof(int));
  6. }
  7. for (i=0; i<e; i++)
  8. MI[i] = (int*) realloc(MI[i], N*sizeof(int));
  9. ClearGraph(hole, MI, MS, N, e);
Функция ClearGraph призвана почистить структуру и обнулить массивы MI и MS, но дает ошибку
Листинг программы
  1. //отрывок из функции ClearGraph
  2. for (i=0; i<e; i++)
  3. for (j=0; j<N; j++)
  4. MI[i][j] = 0;
в 4 строке на операторе присваивания MI[i][j] = 0. Собственно, вопрос: где я дурак?

Решение задачи: «Ошибка сегментации при выводе графа»

textual
Листинг программы
  1. MI = (int**) realloc(MI, sizeof(int*)*e);

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

В данном коде выполняется следующая последовательность действий:

  1. Переменная MI объявлена как int**, что означает, что она является двумерным массивом целых чисел.
  2. Используется оператор realloc для изменения размера памяти, выделенной под переменную MI. В данном случае, размер памяти увеличивается на величину нового размера, рассчитанного как sizeof(int*)*e, где e - это некоторый индекс.
  3. Результатом выполнения оператора realloc является новое значение переменной MI, которое будет указывать на новый блок памяти с увеличенным размером.

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


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

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

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы