1. 程式人生 > 其它 >c++基礎知識-程式記憶體模型

c++基礎知識-程式記憶體模型

一、程式記憶體模型

根據執行前與執行後,一共分為四大區域:

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 < 10
; 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 }
TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian
TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back