Ошибка сегментации при работе, но успешная при отладке

Я обнаружил ошибку проводной сегментации. Я разрабатываю программное обеспечение на 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;
}

Кто-нибудь может помочь объяснить, почему?

5
задан Joy 30 November 2016 в 09:08
поделиться