有幾天沒來了,今天翻到了程序中記憶體區域劃分筆記 ,就簡單寫寫
(1)**區:(text)
主要用於存放功能**,函式指標指向該區域,比如函式名。
(2)唯讀常量區:(text)
存放字串常量和用const修飾的,並且已經初始化的全域性變數和靜態區域性變數。
(3)全域性區/資料區:(data)
存放已經初始化的全域性變數和靜態區域性變數(這個區的資料都有儲存空間,生命週期是整個程式)。
(4)bss段:
存放沒有初始化的全域性變數和靜態區域性變數,bss段會在main函式執行前清0。
(5)堆區:
主要表示使用malloc / calloc / realloc / free等手動申請的動態記憶體,需要手動釋放。
(6)棧區:
主要存放非靜態區域性變數(包括函式的引數),塊變數,有作業系統自動管理。
程序主要分為這幾個區。在程序和執行緒的使用中注意變數所在的區域。否則很容易出現段錯誤
Linux程序的虛擬記憶體區域劃分
linux程序的虛擬記憶體區域分為 區 唯讀常量區 全域性區 bss段 堆區 棧區 區 儲存功能 函式名所在的區域 唯讀常量區 存放字串常量,以及const修飾的全域性變數 全域性區 資料區 存放已經初始化的全域性變數和已經初始化用static修飾的區域性變數 bss段 存放沒有初始化的全域性變數和...
C 中記憶體區域的劃分
那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。那些由new或者malloc分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,那麼在程式結束後,作業系統會自動 ...
c 記憶體區域劃分
c 中,記憶體分為5個區域 堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。其中 棧 就是那些編譯器在需要的時候分配,不需要的時候清理的變數的儲存區域,比如區域性變數和函式引數。在記憶體中連續儲存的區域,位址從低到高。堆 就是new分配的記憶體塊,需要delete。如果沒有delete,在程式退...