c語言學習筆記 記憶體管理 linux的記憶體映像

2021-10-18 07:12:33 字數 645 閱讀 5197

程式在記憶體中的儲存形式

程式儲存在flash中

程式在記憶體中主要分為以下幾段:**段,資料段,唯讀資料段,bss段,堆,棧,檔案對映區,核心對映區(作業系統核心)

程式一般存放在**段,在linux中又稱為文字段

資料段存放的一般是靜態變數和被初始化為非零值的全域性變數

bss段存放的是被初始化為零的全域性變數和未被初始化的全域性變數

有些新增了const的變數會被放到唯讀資料段(rom中,具體視編譯器決定)

檔案映像區,系統會將執行緒需要的檔案從外存中載入到檔案映像區,例如在載入word時,如果改動後不儲存,在關閉當前應用後,其內的資料還是以前的資料,如果點了儲存,資料會從記憶體中載入到外存中,即使關機掉電資料依然存在

想執行c語言,需要先進行重定向,清bss段,初始化棧區,之後才能開始執行c語言

程式為什麼需要記憶體/使用記憶體的目的

為了儲存程式和變數

記憶體是什麼:可以儲存資料的電子元件

記憶體的儲存格式:模擬於乙個格仔乙個格仔的

常見型別有字,半字,位,位元組

什麼是記憶體的編址、定址和對齊

記憶體編址?應該是每個記憶體單元都對應著乙個位址,在需要儲存資料操作時,通過位址即可訪問相關記憶體單元

c語言如何操作記憶體

記憶體管理的方式(資料結構)

C語言學習筆記 記憶體對齊

struct s1 struct s1 正常情況下應該是這樣儲存的,但是我們說過,cpu只能從特定的地方訪存。現在我們假設cpu只能從4的倍數處訪問記憶體。訪問char c1的時候從0 這裡的0指的是相對於結構體起始位址的偏移量,後續0位址均指偏移位址 位址處訪問 訪問int i的時候它只能先訪問四...

c語言學習筆記之記憶體分割槽

c語言有五大記憶體分割槽,分別是棧,堆,全域性區,常量區,區。棧 在需要的時候由編譯器 系統 自動分配,在不需要的時候會由系統自動 的儲存區,記憶體由系統管理,函式中定義的變數儲存在棧中,當呼叫函式的時候函式中定義的變數會被加到棧中,當函式離開的時候,被新增的變數會從棧中移除,棧在最高的位址上,所以...

Linu學習(c語言學習之關鍵字)

對於linux的開發而言c語言非常重要,本節學習的是c語言常用的關鍵字以及運算子的操作。什麼是關鍵字?就是編譯器預先定義的有一定意義的字串,在c語言中有32個關鍵字。下面是列舉的一些關鍵字 sizeof 編譯器檢視變數所佔的記憶體大小的工具 return 函式的返回值 資料型別關鍵字 占用的位元組數...