当前位置: 技术问答>linux和unix
访问内存错误的问题。请高手帮我找下原因。。
来源: 互联网 发布时间:2016-12-15
本文导语: 我在程序中有两个函数: int fun1(){ int *number; *number=1; unsigned long times; *times=1; .....其他部分 } 另外一个函数fun2中的变量声明和fun1一模一样。 另外有个函数fun3,在fun3中调用前两个函数:if(fun1() || fun2()).... 这个...
我在程序中有两个函数:
int fun1(){
int *number;
*number=1;
unsigned long times;
*times=1;
.....其他部分
}
另外一个函数fun2中的变量声明和fun1一模一样。
另外有个函数fun3,在fun3中调用前两个函数:if(fun1() || fun2())....
这个程序编译成功,执行的时候,fun1的调用也是成功的,但是调用fun2的时候,老是
在哪个*number=1的地方报错了。。。
GDB报错信息:program received singal SIGSEGV,segmentation fault..
大家帮我看下哪儿错的?
我自己查到,在fun2中,声明变量后,变量的地址是:0x00,而fun1中声明后却不是。。
为什么会是0X00呢。。。
int fun1(){
int *number;
*number=1;
unsigned long times;
*times=1;
.....其他部分
}
另外一个函数fun2中的变量声明和fun1一模一样。
另外有个函数fun3,在fun3中调用前两个函数:if(fun1() || fun2())....
这个程序编译成功,执行的时候,fun1的调用也是成功的,但是调用fun2的时候,老是
在哪个*number=1的地方报错了。。。
GDB报错信息:program received singal SIGSEGV,segmentation fault..
大家帮我看下哪儿错的?
我自己查到,在fun2中,声明变量后,变量的地址是:0x00,而fun1中声明后却不是。。
为什么会是0X00呢。。。
|
int *number;
*number=1;
你没有为number分配空间啊,那么指针的值是随机的,无效的空间
没有出错的话,算你运气好
*number=1;
你没有为number分配空间啊,那么指针的值是随机的,无效的空间
没有出错的话,算你运气好