读书人

这学期刚学操作系统

发布时间: 2013-09-15 19:58:13 作者: rapoo

这学期刚学操作系统,求助啊~~~
#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内存空间就被释放了,之后内容随机
[解决办法]
返回是的是局部变量!很危险的!

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

读书人网 >C++

热点推荐