首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这学期刚学操作系统,

2013-09-15 
这学期刚学操作系统,求助啊~~~#include iostreamusing namespace stdint * getPtr(){int number 2012

这学期刚学操作系统,求助啊~~~
#include <iostream>
using namespace std;
int * getPtr(){
int number = 2012;
return &number;
}
int main(){
int * ptr = getPtr();
int number;

number = *ptr;
cout <<"number = "<<number<<endl;

number = *ptr;
cout <<"number = "<<number<<endl;
return 0;
}


输出结果为:number = 2012
            number = 1638216


问题:为什么两次输出的结果不同,第二次是个随机数,难道是栈的问题?没学过栈,菜鸟求教! ,
你return了一个局部变量的地址。
当getPtr()结束后, number也就会被释放。 
[解决办法]
getPtr返回之后,getPtr里面的number内存空间就被释放了,之后内容随机
[解决办法]
返回是的是局部变量!很危险的!

第一次能够获取到正常值也只是侥幸而已!可能内存还没擦除,才能获取到有效的数据的!
这样做是很不安全的!

热点排行