+ -
当前位置:首页 → 问答吧 → 访问内存错误的问题。请高手帮我找下原因。。

访问内存错误的问题。请高手帮我找下原因。。

时间:2011-07-23

来源:互联网

我在程序中有两个函数:
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呢。。。

作者: nanbazhangbiao   发布时间: 2011-07-23

看错了。。变量地址不是0x00.。。更不解为什么错了。。

作者: nanbazhangbiao   发布时间: 2011-07-23

int *number;
*number=1;

你没有为number分配空间啊,那么指针的值是随机的,无效的空间
没有出错的话,算你运气好

作者: justkk   发布时间: 2011-07-23

那么该怎么写呢?直接int *number=1?

作者: nanbazhangbiao   发布时间: 2011-07-23

number = (int *)malloc(sizeof(int));
*number = 1;

作者: justkk   发布时间: 2011-07-23

指针变量都要这么申明吗?

作者: nanbazhangbiao   发布时间: 2011-07-23