6

私はObjectiv Cを学んでおり、「ヒープに住む」という用語を常に耳にします。これは、ポインターが住むある種の未知の領域であることを理解しているためですが、正確な用語に本当に頭を悩ませようとしています...のように「strongヒープに存在しないようにプロパティを作成する必要があります。彼は、プロパティがプライベートであるため、それが大きな違いであることを知っています。参照をカウントしたいことを確認したいことは明らかです。このオブジェクトは自動解放によって消去されません (これまでのところ、私が知っていることから「保持」したい) が、かなり頻繁に使用されているため、用語を理解していることを確認したい.

感謝します

4

1 に答える 1

14

データを格納するために、C (拡張により Objective C) プログラムによって使用される 3 つの主要なメモリ領域があります。

  • 静的エリア
  • 自動領域 (「スタック」とも呼ばれます)、および
  • 動的領域 (「ヒープ」とも呼ばれます)。

クラスanewまたはallocメッセージを送信してオブジェクトを割り当てると、結果のオブジェクトは動的ストレージ領域に割り当てられるため、オブジェクトはヒープに存在すると言われます。すべての Objective-C オブジェクトはそのようなものです (ただし、これらのオブジェクトを参照するポインターは、3 つのメモリ データ領域のいずれかにある可能性があります)。対照的に、プリミティブなローカル変数と配列はスタック上で「生きて」いますが、グローバルなプリミティブ変数と配列は静的データ ストレージで生きます。

malloc/ calloc/を使用してヒープからメモリを割り当てることはできますが、ヒープ オブジェクトのみが参照カウントされますrealloc。その場合、割り当ては参照カウントされません。コードはfree、割り当てられた動的メモリをいつ使用するかを決定する責任があります。

于 2013-03-09T03:43:09.803 に答える