黄舟2017-04-18 09:49:36
應該沒辦法查看。
你初始化方法以 new, alloc, retain,copy 開頭都是在堆區,也包含被引用計數管理的物件。
常數這些就會在堆疊區。
簡單一點,除去 NSString *aString = @"aaa" 這種编译时会转换为常量
其它的 Objective-C 對象,理論上,都是在堆區.
此外,block 也是個例外,具體的可以去了解記憶體管理相關的知識點。
巴扎黑2017-04-18 09:49:36
如何查看一個物件是在堆區還是在棧區
====================當中,定義在本地的原生類型(或說值類型)。那麼肯定它是在堆疊上。當函數執行結束時直接銷毀。而其它的引用類型(或oc中的interface)都是在堆上創建的,由ARC負責清理。
let a = 1
}這個時候,a字段是在堆疊上還是堆上?如果是這個問題,那麼告訴你a是在堆上,但它是個值類型。
天蓬老师2017-04-18 09:49:36
一般情況下你可以印出地址,判斷他是在堆還是棧內存中,棧是高地址往下,堆是低地址往上,一般看到0x7fff....這種的肯定是在棧中的,要注意一點的是TEXT段,像NSString這種基本放在TEXT段中,這種地址比堆地址更低,也很好區分;你可以去看一下內存是怎麼劃分的;