c++基礎知識-程式記憶體模型
阿新 • • 發佈:2022-01-04
一、程式記憶體模型
根據執行前與執行後,一共分為四大區域:
1.程式執行前:程式碼區、全域性區;
2.程式執行後:棧區、堆區;
二、程式碼區
程式執行前寫的所有程式碼,最後全部轉換成二進位制錄入電腦
三、全域性區
包括:
全域性變數:寫在函式體之外的變數;
靜態變數:在普通變數前加關鍵字static;
常量:字串常量與const修飾的全域性變數;
四、棧區
區域性變數、形參;該區域資料是由編譯器管理開闢和釋放。
注:不要返回區域性變數地址!
五、堆區
由程式設計師分配釋放,程式結束時由系統回收。
利用new關鍵字,可將資料開闢到堆區,即地址不會被自動釋放。
可利用關鍵字delete釋放資料。
1 //new基本語法 2 int* func() 3 { 4 int * p=new int(10); //new返回是該資料型別指標 5 return p; 6 } 7 //堆區開闢陣列 8 void test01() 9 { 10 //建立10整型資料的資料在堆區 11 int* arr = new int[10]; //10代表陣列有10個元素 12 for (int i = 0; i < 10; i++) 13 { 14 arr[i] = i + 100; 15 } 16 for (int i = 0; i < 10TRANSLATE with x English; i++) 17 { 18 cout << arr[i] << endl; 19 } 20 //釋放堆區陣列:加中括號 21 delete[] arr; 22 } 23 24 int main() 25 { 26 int* m = func(); 27 cout << *m << endl; //堆區資料不會自動釋放 28 //用關鍵字delete釋放 29 delete m; 30 test01(); 31 32 }