malloc时SEGSEGV错误

doubleggs 2006-11-21 05:55:35
一个函数, 有正常的malloc和free.反复调用这个函数后(在第4,5次左右)在malloc的地方程序中止,抛出SEGSEGV信号.应该就是内存分配的问题. 不存在内存耗尽的情况.在网上搜了很多相关的提问,又很多人讨论,但都没有最终的结论和解决办法,有没有高手指点一下.
malloc的地方的代码:

struct val_struct *p_val_struct;
p_val_struct = (struct val_struct *)malloc(use_num*sizeof(struct val_struct));
...全文
312 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
doubleggs 2006-11-23
  • 打赏
  • 举报
回复
还是得谢谢大家.
doubleggs 2006-11-23
  • 打赏
  • 举报
回复
找到问题了.

原来是这个malloc之前的那个malloc的问题,分配的数量不够,经过几次循环后,可能就产生了越界,导致在这个malloc的地方就down掉了.

内存操作一定要小心啊,否则想找问题可太痛苦了.
softwarewander 2006-11-22
  • 打赏
  • 举报
回复
估计跟你的结构体 val_struct内的数据有关
看看有没有涉及到 内存对齐之类的问题
比较怀疑是这个引起的
doubleggs 2006-11-22
  • 打赏
  • 举报
回复
free是在函数退出前free,不是不想贴整个函数,只是内容太多了.
我也怀疑根本问题不在这一句,但确实每次都是在这一句down掉.
luoliwolf 2006-11-22
  • 打赏
  • 举报
回复
检查一下函数体里的循环或者判断条件
如果有枚举的话,很可能是你的数量不够,这是我以前碰到的一个情况

要么就是你的结构体 val_struct内的数据出的问题,仔细检查一下
飞哥 2006-11-22
  • 打赏
  • 举报
回复
呵呵,to jie.ling:
呵呵,我是说笑的了
owlling 2006-11-21
  • 打赏
  • 举报
回复
晕,ls的很不厚道嘛,,,,
飞哥 2006-11-21
  • 打赏
  • 举报
回复
当然我也可以帮你debug下
不过嘛
呵呵。。
owlling 2006-11-21
  • 打赏
  • 举报
回复
还把整个函数给出来把,要不自己设几个断点,debug下,,,这样比怎么看代码都好。
飞哥 2006-11-21
  • 打赏
  • 举报
回复
这句显然没有问题

关键问题不在这句
yingge 2006-11-21
  • 打赏
  • 举报
回复
贴比较完整的代码吧,盲人摸象啊
chai2010 2006-11-21
  • 打赏
  • 举报
回复
free在什么地方呢?

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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