1. 程式人生 > >【C語言】程式碼規範 記憶體管理

【C語言】程式碼規範 記憶體管理

總結查詢資料 總結記憶體申請釋放相關知識點如下。

參考: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

二、

三、