C++內存分區

C++內存分區

C++的內存劃分5部分:

(1)棧區:主要存放函數的參數以及局部變量,由系統進行內存的管理,一般由編譯器進行分配釋放,在函數執行完成後,系統自行釋放內存,不需要用戶管理。整個程序的棧區的大小可以在編譯器中由用戶自行設定,默認的棧區大小爲3M。

(2)堆區:由用戶手動申請,手動釋放,若程序員不釋放,那麼會在程序結束後由系統釋放。在C中可使用malloc(對應的釋放爲free),在C++中一般使用new(對應的釋放爲delete),當然也可以使用malloc。

(3)全局區/靜態區:全局、靜態數據是存放在一起的,初始化的全局變量和靜態變量是在放在一起的,未初始化的全局變量和靜態變量是放在相鄰的空間中。全局變量和靜態全局變量的存儲方式使一致的,但是其區別在於,全局變量在整個源代碼中都可以使用,而靜態全局變量只能在當前文件中有效。比如我們的一個程序有5個文件,那麼某個文件中申請了靜態全局變量,這個靜態全局變量只能在當前文件中使用,其他四個文件均不可以使用。而某個文件中申請了全局變量,那麼其他四個文件中都可以使用該全局變量(只需要通過關鍵字extern申明一下就可以使用了)。事實上static改變了變量的作用範圍。

(4)字符串常量區/文字常量區:存放字符串常量,程序結束後,由系統釋放。

(5)代碼區:存放程序體的二進制代碼。比如我們寫的函數,都是在代碼區。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章