c语言打开文件出现分段故障,运行时出现分段错误,但调试成功

我遇到了有线分段故障.我正在使用

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;

}

有人可以帮忙解释一下原因吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值