2

NSZoneMalloc を使用する古いコードを適応させようとしています。私が使用しているプロジェクトでは、NSZoneMalloc を許可しない ARC が有効になっています。

問題のあるコード行は次のとおりです。

x = NSZoneMalloc([self zone], sizeof(*x));

エラーを解消するために ARC で使用できる同等のコードはありますか? 正直なところ、メモリゾーニングがよくわかりません。これが十分な情報でない場合はお知らせください。

前もって感謝します

4

1 に答える 1

5

一般的に言えば、メモリ ゾーニングは現代ではそれほど重要ではありません。一部の場所ではまだ使用されていますが、これをストレート に安全に置き換えることができますmalloc()

ゾーンは、これまでメモリ使用量を制限し、再利用と局所性を高めるために、複数の割り当てプールに使用されていました。それらは基本的に、現代の仮想メモリの世界では無関係になりました (スワッピングを持たない iOS などのプラットフォームでも)。

ただし、以前は、同じタイプのオブジェクトを大量にリサイクルすることがわかっている場合は、ゾーンを使用して、割り当てのオーバーヘッドを最小限に抑えることができました。または、特定の固定サイズのプールからオブジェクトを割り当てることで、一部のオブジェクトがメモリを消費しすぎないように制限することもできます。

于 2012-06-01T11:27:29.750 に答える