Итак, я был испорчен python и снова пытаюсь взять C. Я получаю эту ошибку seg, и я думаю, что понимаю причину, но не уверен, почему это происходит.Ошибка сегментации Ошибка C
long head = 1; // atleast that is what I was hoping for..
long *localranks = (long*) malloc(n * sizeof(long)); // size_t n = 50;
localranks[head] = 0; // seg fault here..
printf("head is %lu %d\n", head, head);
дает head is 4294967297 1
Таким образом, в то время как голова должна быть 1 .. Я предполагаю, что, оно передается в это значение мусора .. Как я это исправить?
Обязательное предупреждение: [Я делаю результат malloc?] (Http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc). Что касается фактической ошибки, вы должны установить точку останова на проблемной строке и проверить значения 'head',' n' и 'localranks'. –
@PaulR спасибо .. но как? – Fraz
Чтобы добавить комментарий к Paul, обязательно проверьте возвращаемое значение 'malloc'. Из того, что я вижу, malloc должен вернуть 'NULL', к которому вы пытаетесь получить доступ. –