栈区注意事项
1、不要返回局部变量地址
2、栈区的数据由编译器管理开辟和释放
编译器:vs2010 文章来源:https://www.toymoban.com/news/detail-833992.html
输出结果如果有所不同,可以试着查阅编译器的文档。版本不同可能导致结果不同文章来源地址https://www.toymoban.com/news/detail-833992.html
#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;
}
到了这里,关于程序的内存模型\栈区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!