記憶體管理面試題 記憶體沒有立即釋放,造成記憶體堆積

2021-06-28 00:11:56 字數 407 閱讀 4773

問:這段**是否合理?如果不合理,給出修改意見.

@autoreleasepool }

一般面試題都有問題,不然怎麼考察你?你說呢?

所以這道題是存在問題的.

問題在於:一直開闢空間,卻沒有釋放,造成記憶體堆積,最後程式crash.

解決方案:

@autoreleasepool }

}原理:每開闢一次空間,就銷毀一次,這樣就不會造成記憶體的堆積.

autorelease會將宣告為autorelease的物件放入離他最近的自動釋放池中,當自定釋放池銷毀時,會向池中的每乙個物件傳送乙個release訊息.

記憶體管理的原則:如果你對乙個物件進行了alloc,retain,copy之後,你就擁有了該物件的所有權,你就必須對它進行release或者autorelease.

iOS 記憶體管理面試題(記憶體布局)

記憶體布局 2 64bit和32bit下 long 和char所佔位元組是不同的 char 1位元組 ascii 2 256個字元 char 即指標變數 4個位元組 32位的定址空間是2,即32個bit,也就是4個位元組。同理64位編譯器為8個位元組 short int 2個位元組 範圍 2 2 即...

C 記憶體管理相關面試題

1.malloc free和new delete的區別 malloc free和new delete的共同點是 都是從堆上申請空間,並且需要使用者手動釋放。不同的地方是 1.malloc和free是函式,new和delete是操作符2.malloc申請的空間不能初始化,而new可以初始化 3.mal...

面試題 動態記憶體管理

1.malloc void malloc size t size 用來向記憶體申請一塊連續可用的空間,並返回指向這塊空間的指標 1 開闢成功,返回乙個指向開闢好空間的指標 開闢失敗,返回乙個null指標,因此malloc的返回值一定要用assert檢查 2 返回值是void 所以malloc函式並不...