iOS開發 記憶體管理之記憶體分配

2021-07-09 13:14:21 字數 708 閱讀 2654

下面舉個例子說明下:

nsstring* string;

string = [[nsstring alloc] initwithstring:@"hello ios"];

這裡string其實就是乙個指標,oc中除了基本資料型別之外的變數型別都是指標型別,oc物件都是通過指標進行操作的。

第一段**定義了nsstring型別的指標變數,但是沒有指向任何物件。第二段alloc乙個nsstring物件,並將string指向它。

這裡string的記憶體空間是棧空間,「hello ios」的記憶體空間是堆空間。

oc中建立的物件指標儲存在棧記憶體中,而alloc出來的物件的內存在堆記憶體中,棧記憶體中的指標通過賦值指向堆記憶體中的物件,然後通過棧記憶體中的指標訪問物件及其變數,也就是說,其實我們在建立乙個物件時其實是利用了兩個部分的記憶體空間。(注意基本型別是由系統自己管理的,放在棧上)

iOS 之記憶體管理

記憶體管理 誰建立,誰釋放,誰引用,誰管理。加號方法的實質 減號方法建立物件,然後掉用乙個autorelease,把這個建立的物件的記憶體交給系統管理。區域性變數內存在不用的時候進行釋放,全域性變數在dealloc方法中對他進行釋放。物件被釋放掉後會呼叫dealloc方法。1.區域性變數的記憶體管理...

iOS面試之 記憶體管理

記憶體管理 1.什麼是arc?arc是automatic reference counting自動引用計數,在程式編譯時自動加入retain release。在物件被建立時retain count 1,在物件被release時count 1,當count 0時,銷毀物件。程式中加入autorelea...

linux記憶體管理之記憶體分配函式區別

使用者 核心 api名稱 物理連續?大小限制 單位場景 使用者空間 malloc calloc realloc free 不保證堆申請 位元組calloc初始化為0 realloc改變記憶體大小。alloca 棧申請位元組 向棧申請記憶體 mmap munmap 將檔案利用虛擬記憶體技術對映到記憶體...