Когда я компилирую файл 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.
arr
? - person Fred   schedule 30.12.2011arr
? Можете ли вы дать нам что-нибудь, что компилирует и демонстрирует проблему? - person nmichaels   schedule 30.12.2011arr[current][i]
... убедитесь, что 1-е измерение arr имеетcurrent
или более элементов, а второе измерение arr имеетi
или более элементов - person A4L   schedule 30.12.2011size[current]
ведь это верхняя границаi
в вашем цикле? - person A4L   schedule 30.12.2011current
? Где установленsize[current]
? - person nmichaels   schedule 30.12.2011gcc -g -Wall
и использовать отладчикgdb
. - person Basile Starynkevitch   schedule 30.12.2011size[current]
содержит ли значение<=200
. - person alk   schedule 30.12.2011malloc()
? Вы должны, потому что, если он возвращает 0 из-за того, что не смог выделить память, вы получите ошибку seg при доступе к нулевому указателю. - person Jonathan Leffler   schedule 30.12.2011