Java教程

程序的内存模型-内存四区-栈区和堆区

本文主要是介绍程序的内存模型-内存四区-栈区和堆区,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • 栈区

 

点击查看代码
#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;
}

 

这篇关于程序的内存模型-内存四区-栈区和堆区的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!