黄舟2017-04-18 09:49:36
閲覧できないはずです。
new、alloc、retain、copy で始まる初期化メソッドは、参照カウントによって管理されるオブジェクトを含め、すべてヒープ領域にあります。
定数はスタック領域に配置されます。
単純に、NSString *aString = @"aaa" を削除します 编译时会转换为常量
他の Objective-C オブジェクトは、理論的にはヒープ領域にあります。
さらに、ブロックも例外で、特定の知識ポイントについては、メモリ管理について学ぶことができます。
巴扎黑2017-04-18 09:49:36
オブジェクトがヒープ領域またはスタック領域にあるかを確認する方法
============================== ==
あなたの質問はかなり曖昧です。メソッドの実行中であれば、ローカルで定義されたネイティブ型(または値型)です。その場合、それはスタック上にある必要があります。関数の実行が終了すると直接破棄されます。他の参照型 (または oc のインターフェイス) はヒープ上に作成され、ARC はそれらをクリーンアップする役割を果たします。
あなたが聞きたいのはクラス Foo だと思います {
リーリー}
この時点で、フィールドはスタック上にありますか、それともヒープ上にありますか?これが問題である場合は、 a はヒープ上にありますが、それは値型であることを伝えてください。
値の型は、メモリがスタックに割り当てられるかヒープに割り当てられるかには関係がなく、値によるコピー (暗黙的に不変) にのみ関係します
天蓬老师2017-04-18 09:49:36
通常の状況では、アドレスを出力して、それがヒープ メモリ内にあるかスタック メモリ内にあるかを判断できます。スタックは上位アドレスから下にあり、ヒープは下位アドレスから上にあります。一般に、0x7fff が表示されます。 .... スタック内で注意すべきことの 1 つは、NSString がヒープ アドレスよりも低い位置にあることです。メモリがどのように分割されているかを見てください。