程式的記憶體模型-記憶體四區-棧區和堆區
阿新 • • 發佈:2021-07-21
- 棧區
點選檢視程式碼
#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; }