访问内存错误的问题。请高手帮我找下原因。。
时间: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呢。。。
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分配空间啊,那么指针的值是随机的,无效的空间
没有出错的话,算你运气好
*number=1;
你没有为number分配空间啊,那么指针的值是随机的,无效的空间
没有出错的话,算你运气好
作者: justkk 发布时间: 2011-07-23
那么该怎么写呢?直接int *number=1?
作者: nanbazhangbiao 发布时间: 2011-07-23
number = (int *)malloc(sizeof(int));
*number = 1;
*number = 1;
作者: justkk 发布时间: 2011-07-23
指针变量都要这么申明吗?
作者: nanbazhangbiao 发布时间: 2011-07-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28