2011-07-08 6 views
1

私は非常に長いiOSアプリケーションのフェーズを管理するためにNSOperationQueueを使っていますので、私はそれを非同期に管理したいと思います。その段階では、直接calloc関数を使用してCで大きな配列を割り当てます。 大きいとは、1024x256の二次元浮動小数点配列などを意味します。NSThreadはメインスレッドと同じメモリ特権を持っていますか?

すべてがメインスレッドにありますが、コンピューティング中にロックされているアプリケーションがすべて正常に機能している場合、重い部分をNSInvocationOperationに移動すると、奇妙な結果が得られます。

今プログラムで使用可能なメモリがありません述べコンソールで:操作キューによって管理されるスレッドがメインスレッドに比べていくつかの異なる制限がある場合のmallocに私は思っていた

を呼び出すために安全ではない、との場合にはどのようなこの問題を回避するために行う方が良いです。

答えて

1

私が知っている制限はありませんが、使用可能なRAMの端に当たっている可能性があります。 iOSは仮想メモリを使用しないため、メモリが不足すると他のアプリに警告を送信してRAMを解放します。それがあなたの問題の原因かもしれません。

使用しているRAMの量を計測するために計測器を使用します。それが約20MBを超えると、とにかく過度のメモリ使用のために終了する危険性が高いでしょう。

関連する問題