免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 23102 | 回复: 2
打印 上一主题 下一主题

段错误的问题:Cannot access memory at address 0xfbfebcc8 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-06 14:35 |只看该作者 |倒序浏览
我在修改一个程序,运行时提示段错误.然后用GDB调试:
Program   received   signal   SIGSEGV,   Segmentation   fault.
0x08074333   in   calc_mutex   (initial_state=0x0)   at   mutex.c:675
675                                               temp   =   FT_FT_mutex[C.F[j]][m];
(gdb)   print   C.F[j]
$1   =   0
(gdb)   print   m
$2   =   0
(gdb)   print   FT_FT_mutex[0][0]
Cannot   access   memory   at   address   0xfbfebcc8


这个意思应该是不能访问FT_FT_mutex[0][0]的内存地址是吧.可是我在程序里头把temp   =   FT_FT_mutex[C.F[j]][m];改成temp   =FT_FT_mutex[0][0];就不出错了.

我想问一下:temp   =   FT_FT_mutex[C.F[j]][m];(里头C.F[j]=0,m=0)和temp   =FT_FT_mutex[0][0];有什么区别?为什么一个出错一个又不出错呢?

论坛徽章:
0
2 [报告]
发表于 2007-11-06 15:05 |只看该作者
原帖由 lyyy 于 2007-11-6 14:35 发表
我在修改一个程序,运行时提示段错误.然后用GDB调试:
Program   received   signal   SIGSEGV,   Segmentation   fault.
0x08074333   in   calc_mutex   (initial_state=0x0)   at   mutex.c:675
675     ...


我想并非是[0][0]出错,说不定是上溢出。
你watch j 和 m,然后单步调这个循环。

论坛徽章:
0
3 [报告]
发表于 2007-11-06 19:27 |只看该作者

回复 #2 web_surf 的帖子

多谢,已经找到原因了,是C.F[j]和m变化的过程中有别的变量地址也是给到FT_FT_mutex[0][0]那里了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP