堆、棧、靜態數據區、常量區、代碼區
以下是各個區的作用:
(1)代碼區:存放程序代碼;
(2)數據區
a.靜態數據區: 在編譯器進行編譯的時候就為該變量分配的內存,即全局變量和靜態變量(用static聲明的變量),存放在這個區的數據程序全部執行結束后系統自動釋放,聲明周期貫穿于整個程序執行過程。全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域(.data),未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域(.bss)。
b.堆區:這部分存儲空間完全由程序員自己負責管理,它的分配和釋放都由程序員自己負責。這個區是唯一一個可以由程序員自己決定變量生存 期的區間。可以用malloc,new申請對內存,并通過free和delete釋放空間。如果程序員自己在堆區申請了空間,又忘記將這片內存釋放掉,就 會造成內存泄露的問題,導致后面一直無法訪問這片存儲區域。但程序退出后,系統自動回收資源。分配方式倒是類似于鏈表。
c.棧區:存放函數的形式參數和局部變量,由編譯器分配和自動釋放,函數執行完后,局部變量和形參占用的空間會自動被釋放。效率比較高,但是分配的容量很有限。
d.常量區: 存放常量的區間,如字符串常量等,注意在常量區存放的數據一旦經初始化后就不能被修改。 程序結束后由系統釋放。
C++ 內存布局
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 3.1 OC特性之 內存五大區域 此篇為針對Objective-c語言入門的基礎知識,為了能讓大家更清楚的理解,此...
- 幾種語言的特性 匯編程序:將匯編語言源程序翻譯成目標程序編譯程序:將高級語言源程序翻譯成目標程序解釋程序:將高級語...
- 重用機制簡介: UITableView通過重用單元格來達到節省內存的目的:通過為每個單元格指定一個重用標識符(...