栈区注意事项
1、不要返回局部变量地址
2、栈区的数据由编译器管理开辟和释放
编译器:vs2010
输出结果如果有所不同,可以试着查阅编译器的文档。版本不同可能导致结果不同
#include<iostream> using namespace std; int* func(int b)//形参数据也会放在栈区 { int a=10; //局部变量 //存放在栈区,栈区的数据在函数执行完后自动释放 return &a; //返回局部变量的地址 } int main() { int b=1; //接受func函数的返回值 int *p=func(b); cout<<*p<<endl; //第一次正常输出是因为编译器做了一次保留 cout<<*p<<endl; //第二次数据不再保留 system("pause"); return 0; }