OC記憶體管理機制

2021-08-21 22:17:25 字數 909 閱讀 9456

物件分配在堆中,指標分配在棧中。基本資料型別與結構體分配中棧中

1棧--  由編譯器自動分配釋放。

2堆--  一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**。

3全域性區(靜態儲存區)-- 全域性變數和靜態變數的儲存是放在一塊區域 ,程式退出後自動釋放 。全域性區又分為全域性初始化區和全域性未初始化區。初始化的全域性變數和靜態變數存放在全域性初始化區,未初始化的全域性變數和未初始化的靜態變數存放在相鄰的另一塊區域。

4常量區-- 專門放數字/字元常量的地方, 程式退出後自動釋放 。

在函式體中定義的自動變數通常是在棧上

用malloc, calloc, realloc等分配記憶體的函式分配得到的就是在堆上

加了static修飾符後不管在**都存放在全域性區(靜態儲存區)。

在所有函式體外定義的是全域性變數,儲存在全域性區(靜態儲存區),在整個c程式所有原始檔中通過extern宣告後都可用。

在所有函式體外定義的static全域性變數儲存在全域性區(靜態儲存區),只在該檔案中有效,不能extern宣告到別的檔案用。

在函式體內定義的static靜態變數儲存在全域性區(靜態儲存區),表示只在該函式體內有效,但是其生命週期卻變為和整個程式同生同死。

另外,函式中的"adgfdf"這樣的字串存放在常量區。 

**: 

int a = 0; //全域性初始化區 

char *p1; //全域性未初始化區 

main() 

OC 記憶體引用計數 記憶體管理機制

記憶體引用計數 用於管理物件記憶體的 使用次數 注意 是對記憶體的引用計數 只有當記憶體的引用計數為0時,記憶體自動釋放 release 僅僅讓通過指標讓記憶體的引用計數 1 assign 基本資料型別 retain 淺拷貝,但是引用計數會 1 property retain void setp p...

記憶體管理機制

記憶體管理 jvm將記憶體分成三大主要區域 堆,棧,方法區,用來儲存資料。堆 堆中主要儲存引用型別物件,給成員變數分配空間。棧 jvm在執行程式時,在棧中會為每乙個方法都提供儲存空間叫棧幀,用來儲存方法中的區域性變數。方法區 用來儲存jvm載入的位元組碼檔案的資訊 類的資訊 包含類的方法,方法只有乙...

記憶體管理機制

記憶體管理是乙個作業系統必不可少 並且 非常重要的一環 linux 的成功 和它優秀的記憶體管理聯絡非常密切 因為乙個系統的高效性慾穩定性往往決定於它的記憶體管理機制 我項很多人吃過 dos 下 640k 的苦吧 前面我們介紹了 386 保護模式 從今天起我們將在此基礎上 分析 linux 的虛擬儲...