我遇到了有线分段故障.我正在使用
Eclipse CDT在C中开发一个软件.当在终端上运行我的程序(Ubuntu 10,64bits)时,它只报告“分段错误”.但是,当我在Eclipse中使用gdb进行调试时,它会结束并且结果是正确的.
我知道分段错误可能有很多原因.我很抱歉我无法显示我的代码,因为我不知道问题出在哪里……
但是有人可以帮助我吗,有没有可能发生的情况就像我的情况一样:终端上的分段故障,而调试时却很好?非常感谢.
谢谢,所有.我会花一些时间学习valgrind.我只是通过realloc()替换malloc()来修复bug.呼叫之后是两个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;
}
有人可以帮忙解释一下原因吗?