C++ 程序运行后的内存模型
程序运行后栈区:由编译器自动分配释放,存放函数的参数值,局部变量等注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放#include<iostream>#include<string>using namespace std;int* func() {int a = 10;//局部变量放在栈区,方法执行完毕自动释放内存return &a;//返回局部变量
·
程序运行后
栈区:
由编译器自动分配释放,存放函数的参数值,局部变量等
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放
#include<iostream>
#include<string>
using namespace std;
int* func() {
int a = 10; //局部变量放在栈区,方法执行完毕自动释放内存
return &a; //返回局部变量地址
}
int main() {
int * p = func();
cout << *p << endl; //第一次可以打印正确的数字,是因为编译器做了保留
cout << *p << endl; //第二次这个数据就不再保留了
system("pause");
}
总结:第一次可以打印正确的数字,是因为编译器做了保留
更多推荐
已为社区贡献17条内容
所有评论(0)