淺談C++記憶體配置

來源:互聯網
上載者:User

C++記憶體配置由五個部分組成:棧、堆、全域代碼區、常量區、程式碼區。如所示:

1、棧區:函數中定義的局部變數放在棧中,函數執行結束時儲存單元自動釋放。棧記憶體配置一般採用寄存器來存取,存取效率高但是記憶體容量有限。

2、堆區:通常在堆中進行動態分配。程式啟動並執行時候用new或malloc申請一定大小的記憶體,用delete或free釋放之前申請的記憶體。不管記憶體空間在何時申請,只要沒有用delete或free釋放該記憶體空間就一直被佔用著。也就是說,動態記憶體分配的變數的生存周期由程式員自己決定。程式利用new或malloc申請了一塊記憶體,用完之後沒有釋放掉,這樣這塊記憶體就失去了控制,這就造成了記憶體泄露。

3、全域代碼區:這塊記憶體地區存放的是全域變數、static變數。記憶體在程式編譯的時候就已經分配好,在程式的整個運行期間都存在。在C語言中,全域變數區又分為初始化的和未初始化的。在C++中沒有這種區別,它們共同佔用這塊記憶體地區。

4、常量區:存放的是常量,不允許修改。

5、程式碼區:存放整個程式的代碼。注意,資料和代碼是分開儲存的。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.