程式的記憶體映像

2021-05-22 03:07:45 字數 489 閱讀 7768

一、

程式的記憶體映像

乙個由c/c++

編譯的程式的記憶體分布分為以下幾個部分:

1、棧( stack ):

也是我們所說的堆疊,是由編譯器自動分配釋放,用來存放函式引數值,函式的返回位址,非靜態區域性變數的值等。其操作方式類似於資料結構中的棧(後進先出

lifo

)。

2、 堆(

heep

):一般由程式設計師分配釋放,若程式設計師不釋放,程式結束可能由

os **。

3、全域性區(靜態區):全域性變數和 靜態變數儲存在這一塊,初始化的全域性變數和靜態變數放在一塊區域(_data),未初始化的全域性變數&靜態變數放在相鄰的另一塊區域

( bss)

。程式結束後由系統釋放。

4、文字常量區:常量字串放在這個區域。

5、程式**區:存放函 數體的二進位制** 。

程式的記憶體映像

這幾天在看c語言的書籍,對c的記憶體映像有點疑惑,於是,查詢資料,查閱了龐麗萍編著的 作業系統原理 第四版中的第七章主存管理中的段式系統,此外還看了王元珍 曹忠生 韓忠芬編著的 80x86組合語言程式設計 得到了乙個自己對在80x86結構下的記憶體對映的理解。不過也許自己的理解是錯的或者有不到之處,...

linux c的記憶體映像

記憶體映像其實就是在記憶體中建立乙個和外存檔案完全相同的映像。使用者可以將整個檔案對映到記憶體中也可以部分對映到記憶體。系統會將對記憶體映像的改動如實的反映到外存檔案中。從而實現了通過記憶體映像對外存檔案的操作。記憶體映像的特點 1 可以加快對io的操作速度。2 使用者可以通過指針對檔案進行操作,間...

c 的記憶體映像

先來看乙個問題 類的空指標能不能呼叫類的成員函式呢?class a a void func 1 為什麼會有這種情況呢接下來我們看看c 的物件記憶體映像 下圖是a的物件的記憶體布局 a這種基本的c 物件模型有下述幾個規則 因此,構成物件本身的只有資料,任何成員函式都不隸屬於任何乙個物件,非靜態成員函式...