ошибка сегментации при выполнении кода C в Ubuntu - PullRequest
2 голосов
/ 30 декабря 2011

Когда я компилирую файл c, gcc не возвращает ошибок, но во время выполнения возникает ошибка сегментации. Отладчик показал, что ошибка происходит в этой части кода:

      int q=size[current];
      int *temp;
      temp = malloc ( sizeof(int)*q);
      for(i=0;i<size[current];i++)
        temp[i]=arr[current][i];

Обр определяется:

      int arr[20][200];

ток по умолчанию равен 0.

Я пытаюсь скопировать содержимое массива внутри 2d-массива (arr) во временный массив, Я пытался не использовать malloc, но все та же проблема.

ps: программа отлично работает на windows.

Ответы [ 2 ]

3 голосов
/ 30 декабря 2011

Нет ничего плохого в показанном вами коде (который я вижу).

Первый шаг, который вы должны сделать, это запустить вашу программу под Valgrind и исправить все ошибки, о которых она сообщает.

Если Valgrind сообщает об ошибках, которые вы не понимаете, обновите ваш вопрос выводом Valgrind.

Если Valgrind ничего не сообщает, запустите вашу программу под GDB, напечатайте значения i, current, size[current] и т. Д. И обновите свой вопрос в сеансе GDB.

2 голосов
/ 30 декабря 2011

Я подозреваю, что size[current] больше 200.

...