当前位置: 技术问答>linux和unix
看不懂的段错误:Cannot access memory at address 0xfbfebcc8
来源: 互联网 发布时间:2016-02-27
本文导语: 我在修改一个程序,运行时提示段错误.然后用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) pri...
我在修改一个程序,运行时提示段错误.然后用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];有什么区别?为什么一个出错一个又不出错呢?
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];有什么区别?为什么一个出错一个又不出错呢?
|
也许在程序开头的时候,C.F[j]并不等于0,或者是m 并不等于0
你在temp = FT_FT_mute[C.F[j]][m];这句话前打印一下,C.F[j] 和 m 的值看看
你在temp = FT_FT_mute[C.F[j]][m];这句话前打印一下,C.F[j] 和 m 的值看看
|
楼主可以把代码贴出来么?
|
当你的C.F[j]>0,比如C.F[j]=100的时候
FT_FT_mutex[100][0]如果没有这么大,就会报Cannot access memory at address
FT_FT_mutex[100][0]如果没有这么大,就会报Cannot access memory at address