Я обнаружил ошибку проводной сегментации. Я разрабатываю программное обеспечение на C, используя Eclipse CDT. При запуске моей программы на терминале (Ubuntu 10, 64 бита) она просто сообщает «Ошибка сегментации». Однако, когда я отлаживаю с помощью gdb в Eclipse, он идет до конца и результат правильный.
Я понимаю, что может быть много причин для ошибок сегментации. И мне очень жаль, что я не могу показать свой код, так как я не знаю, где может быть проблема ...
Но не мог бы кто-нибудь помочь мне, может ли случиться какая-нибудь ситуация, как в моем случае: ошибка сегментации терминалы, пока нормально в отладке? Огромное спасибо.
Спасибо всем. Я бы потратил некоторое время на изучение валгринда. Я только что исправил ошибку, заменив malloc () на realloc (). За вызовом следуют два memcpy. Это причина? Вот код фрагмента:
bwa_seq_t *merge_seq (bwa_seq_t *s1, bwa_seq_t *s2) {
ubyte_t *seq1, *seq2, *tmp;
if (!s1 || !s2)
return 0;
seq1 = s1->seq;
seq2 = s2->seq;
tmp = (ubyte_t*) calloc (sizeof(ubyte_t), (s2->len + s1->len + 1));
memcpy(tmp, seq1, sizeof(ubyte_t) * s1->len);
memcpy(&tmp[s1->len], seq2, sizeof(ubyte_t) * s2->len);
s1->len += s2->len;
tmp[s1->len] = '\0';
s1->seq = tmp;
return s1;
}
Кто-нибудь может помочь объяснить, почему?