Linux平台下程式記憶體的分配

2021-08-19 17:36:21 字數 753 閱讀 3025

程式記憶體分配:

1.棧區(stack):由編譯器自動分配釋放,存放為執行函式而分配的區域性變數,函式引數,返回引數,返回位址。其操作方式類似於資料結構中的棧。

2.堆區(heap):一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**。分配方式類似於鍊錶。

3.全域性資料區:存放全域性變數,靜態資料,常量。程式結束後由系統釋放。

1).已初始化全域性資料區     2).未初始化全域性資料區

4.文字常量區:常量字串就是放在這裡的。程式結束後由系統釋放。

5.程式**區:存放函式體(類成員函式和全域性函式)的二進位制**。

總結:記憶體中的位址由低到高依次是:**區—>字元常量區—>已初始化全域性資料區—>未初始化全域性資料區—>堆區—>棧區,堆疊相對而生,堆中的位址逐漸增大,棧中的位址逐漸減小。(棧:先進後出,後進先出)

Linux 程式的記憶體分配

可以通過命令objdump t bgw grep bss wc l檢視bss個數,objdump t bgw grep data wc l檢視data個數 其中,bss段 bss segment 通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域 data段用於儲存初始化的全域性變數 rod...

linux平台下程式跟蹤strace筆記

c 統計每一系統呼叫的所執行的時間,次數和出錯的次數等.d 輸出strace關於標準錯誤的除錯資訊.f 跟蹤由fork呼叫所產生的子程序.ff 如果提供 o filename,則所有程序的跟蹤結果輸出到相應的filename.pid中,pid是各程序的程序號.f 嘗試跟蹤vfork呼叫.在 f時,v...

SylixOS ARM平台下記憶體對齊訪問

現代計算機中記憶體空間都是按照byte劃分的,從理論上講對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定變數的時候經常在特定的記憶體位址訪問,這就需要各型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。各個硬體平台對儲存空間的處理上有很大的不同。一些平台對...