OC中程式的記憶體分布 類載入

2022-05-06 15:27:06 字數 557 閱讀 5777

類載入:一句話形容就是在類第一次使用時載入到**段,直到程式結束時才釋放。

oc中的記憶體分布

從下往上依次是:

**段:存放**

資料段:已初始化全域性變數和靜態變數

bss段:未初始化的全域性變數和靜態變數

堆區:new malloc 等分配的空間

棧區:區域性變數

假設在main函式中宣告

假設person擁有nsstring *name 和 方法add

person *p1 = [person new]

首先p1是乙個區域性變數 ,存放在棧區,同時p1是乙個指標,指向物件p1的位址(此物件存放在堆區)

那麼在堆區包含哪些內容呢? 

堆區存放類類所擁有的變數,在這也就是*name,還有乙個isa指標

isa指標指向什麼呢? 函式不放在堆區那又放在哪呢?

isa指向person類在**段中的位置,函式也就放在**段

下面看一張圖

程式的記憶體分布

32位的系統中,記憶體空間擁有4gb 2的32次方 的定址能力。大多數的作業系統都會將記憶體空間 中的一部分挪給核心使用,應用程式無法直接訪問這一段記憶體。windows預設情況會將高位址的2gb空間分給核心,而linux缺省會將高位址的1gb空間分配給核心,剩下的空間被稱為記憶體空間。一般來說,應...

作業系統中程式的記憶體結構說明

乙個程式在記憶體上由bss段 data段 text段三個組成的。在沒有調入記憶體前,可執行程式分為 段 資料區和未初始化資料區三部分。bss段 bss segment 通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。bss...

OC類的分類和類的載入過程

1.分類的使用 在開發過程中,如需要給某個類新增一些方法而不改變原來類,可以通過分類來實現,利用分類可以給原有類新增一些後來需要的一些功能,也可以達到共同開發乙個類,實現專案合作。分類的作用 再不改變原來類的基礎上,可以為類增加一些方法,原來類可以是系統自帶的類 分類的命名規則 可以隨便命名,一般分...