1. 程式人生 > 其它 >程式的記憶體模型-記憶體四區-棧區和堆區

程式的記憶體模型-記憶體四區-棧區和堆區

  • 棧區
點選檢視程式碼
#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;
}