検索

ホームページ  >  に質問  >  本文

ios - 大家中午好,xcode 中如何查看一个对象是在堆区还是在栈区?

大家中午好,xcode 中如何查看一个对象是在堆区还是在栈区?

迷茫迷茫2771日前896

全員に返信(3)返信します

  • 黄舟

    黄舟2017-04-18 09:49:36

    閲覧できないはずです。
    new、alloc、retain、copy で始まる初期化メソッドは、参照カウントによって管理されるオブジェクトを含め、すべてヒープ領域にあります。
    定数はスタック領域に配置されます。

    単純に、NSString *aString = @"aaa" を削除します 编译时会转换为常量

    他の Objective-C オブジェクトは、理論的にはヒープ領域にあります。

    さらに、ブロックも例外で、特定の知識ポイントについては、メモリ管理について学ぶことができます。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:49:36

    オブジェクトがヒープ領域またはスタック領域にあるかを確認する方法
    ============================== ==
    あなたの質問はかなり曖昧です。メソッドの実行中であれば、ローカルで定義されたネイティブ型(または値型)です。その場合、それはスタック上にある必要があります。関数の実行が終了すると直接破棄されます。他の参照型 (または oc のインターフェイス) はヒープ上に作成され、ARC はそれらをクリーンアップする役割を果たします。

    あなたが聞きたいのはクラス Foo だと思います {

    リーリー

    }
    この時点で、フィールドはスタック上にありますか、それともヒープ上にありますか?これが問題である場合は、 a はヒープ上にありますが、それは値型であることを伝えてください。

    値の型は、メモリがスタックに割り当てられるかヒープに割り当てられるかには関係がなく、値によるコピー (暗黙的に不変) にのみ関係します

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:49:36

    通常の状況では、アドレスを出力して、それがヒープ メモリ内にあるかスタック メモリ内にあるかを判断できます。スタックは上位アドレスから下にあり、ヒープは下位アドレスから上にあります。一般に、0x7fff が表示されます。 .... スタック内で注意すべきことの 1 つは、NSString がヒープ アドレスよりも低い位置にあることです。メモリがどのように分割されているかを見てください。

    返事
    0
  • キャンセル返事