程序的内存模型-内存四区-栈区和堆区
作者:互联网
- 栈区
点击查看代码
#include<iostream>
#include<string>
using namespace std;
//栈区数据注意事项 -- 不要返回局部变量的地址
//栈区的数据由编译器管理开辟和释放
//形参数据也会放在栈区
int* func()
{
int a = 10; //局部变量 存放在栈区,栈区的数据在函数执行完后自动释放
return &a; //返回局部变量的地址
}
int main(){
//接收func函数的返回值
int *p = func();
cout << *p << endl; //第一次可以打印正确的数字,是因为编译器做了保留
cout << *p << endl; //第二次这个数据就不再保留了
system("pause");
return 0;
}
- 堆区
点击查看代码
#include<iostream>
#include<string>
using namespace std;
//在堆区开辟数据
//利用关键字new 可以将数据开辟到堆区
//指针本质也是局部变量,放在栈上,指针保存的数据是放在堆区
int* func()
{
int *p = new int(10);
return p;
}
int main(){
int *p = func();
cout << *p << endl;
cout << *p << endl;
system("pause");
return 0;
}
标签:栈区,int,四区,堆区,局部变量,内存,func,include 来源: https://www.cnblogs.com/yeqian/p/15041016.html