段错误

问题已经找出来了, 不是程序的问题, 是传入的文件的问题,超过了在程序中规定的数组的大小,访问越界


今天忙了一天,就写了一个程序,还段错误,解决了
但是不知道具体的原因。多半是栈的问题。。 guess

先说下环境。   读取一文件。 对其中的每行数据操作(一行不是很长)。
char buf[513]
用的fgets(buf ,513,fp)
在这种情况下,读取一个很小的数据文件 是正常的。

但是当我放入一个几万行的文件时候。
fgets 也能够读取到最后一个行的数据(通过打印看出来的)。 却不能够跳出fgets。显示下面的信息
下面的就看不懂了。     

我最后的解决办法是设置如下
char buf[513]
用的fgets(buf , 111 ,fp)

*** stack smashing detected ***: ./a.out terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x4 [0xb7f3bda8]
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x0)[0xb7f3bd60]
./a.out[0x8048ad9]
[0x63352563]
======= Memory map: ========
08048000-08049000 r-xp 00000000 fc:00 302203     /root/a.out
08049000-0804a000 r--p 00000000 fc:00 302203     /root/a.out
0804a000-0804b000 rw-p 00001000 fc:00 302203     /root/a.out
0944b000-0946c000 rw-p 0944b000 00:00 0          [heap]
b7df4000-b7e01000 r-xp 00000000 fc:00 73165      /lib/libgcc_s.so.1
b7e01000-b7e02000 r--p 0000c000 fc:00 73165      /lib/libgcc_s.so.1
b7e02000-b7e03000 rw-p 0000d000 fc:00 73165      /lib/libgcc_s.so.1
b7e08000-b7e3e000 rw-p b7e08000 00:00 0
b7e3e000-b7f9a000 r-xp 00000000 fc:00 73311      /lib/tls/i686/cmov/libc-2.9.so
b7f9a000-b7f9b000 ---p 0015c000 fc:00 73311      /lib/tls/i686/cmov/libc-2.9.so
b7f9b000-b7f9d000 r--p 0015c000 fc:00 73311      /lib/tls/i686/cmov/libc-2.9.so
b7f9d000-b7f9e000 rw-p 0015e000 fc:00 73311      /lib/tls/i686/cmov/libc-2.9.so
b7f9e000-b7fa1000 rw-p b7f9e000 00:00 0
b7fa4000-b7fa5000 rw-p b7fa4000 00:00 0
b7fa6000-b7fa8000 rw-p b7fa6000 00:00 0
b7fa8000-b7fa9000 r-xp b7fa8000 00:00 0          [vdso]
b7fa9000-b7fc5000 r-xp 00000000 fc:00 73166      /lib/ld-2.9.so
b7fc5000-b7fc6000 r--p 0001b000 fc:00 73166      /lib/ld-2.9.so
b7fc6000-b7fc7000 rw-p 0001c000 fc:00 73166      /lib/ld-2.9.so
bfeb1000-bfec6000 rw-p bffeb000 00:00 0          [stack]
Aborted


看了fgets的手册,还是没有找到原因。。



以后在总结了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值