linux在main函数结尾出现段错误的问题

项目中需要用到sqlite来存储一些临数据,sqlite本来我就不熟,还好老外的东西文档比较齐全。所以在这边花的间还不算长,最崩溃的是,调试程序的候出现在main函数的结尾出现了段错误。gdb 调试了半天,也跟踪不出来,core文件也显示在main函数的结尾。。

最终的问题竟然是 main函数内的一个数据出现越界的情况,为了测试这个结论,我写了如下程序

 1 #include<stdio.h>
  2 #include<string.h>
  3 int main()
  4 {
  5   char test[10];
  6   int i=0;
  7   int sum=0;
  8    sprintf(test,"123456789101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111");
  9 /*
 10 test数组明显越界,但是编译器在不会在此处报错   
 12 */
 13  for(i=0;i<100;i++)
 14   {
 15       sum+=i;
 16   }

    /* 这里你可以做一些其事情,这里的代码完全正确*/
 17   return 0;

    
 18 } /*gdb 调试发现错误出现在这一行*/

 

至于这个问题的原因,等我有空了进一步考证一下。

这个例子告诉我们段错误有可能滞后发生,所以写代码一定要小心。。。。。



转自 (http://hi.baidu.com/ycyanyan6/item/90819b844749a0c998255fbc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值