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

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

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

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

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

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

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

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

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

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


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

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

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