malloc and segment fault 问题

maddrone 2006-06-04 07:32:20
我的代码中有一个 unsigned char *array[20000]
在一个不到20000行的文件中解析数据
每一行数据存在用malloc函数所获取的堆内存空间中
然后将堆内存里指针放在array中

在程序运行过程中
根据打印结果
前面几十行数据没有任何问题
可以正确的解析
但在解析某一行时
malloc函数发生段错误
segment fault
要解析的文件没有问题
我不知道是怎么回事情

linux debian gcc
...全文
424 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
eqxu 2006-06-05
  • 打赏
  • 举报
回复
最好利用循环队列,在编程之前要考虑系统资源
zzstephen 2006-06-05
  • 打赏
  • 举报
回复
www.chinalinuxpub.com/doc/pro
到这里去看看吧

基本 gdb 命令.
命 令 描 述
file 装入想要调试的可执行文件.
kill 终止正在调试的程序.
list 列出产生执行文件的源代码的一部分.
next 执行一行源代码但不进入函数内部.
step 执行一行源代码而且进入函数内部.
run 执行当前被调试的程序
quit 终止 gdb
watch 使你能监视一个变量的值而不管它何时被改变.
break 在代码里设置断点, 这将使程序执行到这里时被挂起.
make 使你能不退出 gdb 就可以重新产生可执行文件.
shell 使你能不离开 gdb 就执行 UNIX shell 命令.

maddrone 2006-06-05
  • 打赏
  • 举报
回复
我的程序编译成一个共享库文件
我不大了解用gdb怎么调试
attach后总不能单步执行

如果时内存越界问题
应该怎么处理呢?
qdhuxp 2006-06-05
  • 打赏
  • 举报
回复
mark!
xfzhao_cn 2006-06-05
  • 打赏
  • 举报
回复
用valgrind 查查
xfzhao_cn 2006-06-05
  • 打赏
  • 举报
回复
就是内存越界:)
hundlom 2006-06-04
  • 打赏
  • 举报
回复
应该是内存越界了。
  • 打赏
  • 举报
回复
对,用gdb跟踪一下找出错的地方。不调试你怎么知道具体是什么出问题了
zzstephen 2006-06-04
  • 打赏
  • 举报
回复
”malloc函数发生段错误“ 感觉很奇怪,要不是就是分配不成功,不然指针怎么会在这出问题呢?是不是错误出在别的地方,lz你改动了指针?
fytzzh 2006-06-04
  • 打赏
  • 举报
回复
内存越界,使用野指针??
linaxing 2006-06-04
  • 打赏
  • 举报
回复
堆空间用完的可能性不大,估计是内存越界了。最好还是用gdb跟一下,看看到底哪里出了问题。
maddrone 2006-06-04
  • 打赏
  • 举报
回复
我认为可能性很小
如果空间不够
malloc返回null 我对此加了判断 应该有打印信息出现
而且不肯能只解析了几十行就堆空间不足了
整个文件也才1M而已
zzstephen 2006-06-04
  • 打赏
  • 举报
回复
堆的空间分配完了

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧