【C語言】程式碼規範 記憶體管理
阿新 • • 發佈:2019-01-25
總結查詢資料 總結記憶體申請釋放相關知識點如下。
參考:http://blog.csdn.net/chenyiming_1990/article/details/9476181
一、程式記憶體的組成:
1. 一共由3個部分組成:
BSS段 : 不在可執行檔案中,由系統初始化
包含程式中未初始化的全域性變數和未初始化的static變數。 屬於靜態記憶體分配。即程式一開始就將其清零了。
BSS段只儲存沒有值的變數,所以事實上它並不需要儲存這些變數的映像。執行時所需要的BSS段大小記錄在目標檔案中,
但BSS段並不佔據目標檔案的任何空間。
data段: 在可執行檔案中,由系統從可執行檔案中載入
data段包含三個部分:heap(堆)、stack(棧) 和靜態資料區。
1)堆(heap)
堆是用於存放程序執行中被動態分配的記憶體段,它的大小並不固定,可動態擴張或縮減。
malloc等函式-----堆被擴張
free等函式-----堆被縮減
2)棧(stack)
一個寄存、交換臨時資料的記憶體區。
stack段存放函式內部的變數、引數和返回地址,
其在函式被呼叫時自動分配,訪問方式就是標準棧中的LIFO方式。
3)靜態資料區 在可執行檔案中,由系統從可執行檔案中載入
已初始化的全域性變數、靜態變數和常量 。
text 段:
指用來存放程式執行程式碼的一塊記憶體區域。這部分割槽域的大小在程式執行前就已經確定,並且記憶體區域屬於只讀。
可參考示例
http://www.cnblogs.com/coder2012/p/3150757.html
二、
三、