1

現在、目的の C プログラムで大きなメモリ リークが発生しており、それを見つけて修正しようとしています (明らかに!) 私が直面している問題は、ARC を使用してプログラムを作成したことです。リリースの独自の実装などを作成して、オブジェクトがいつリリースされるかを確認します。

さらに悪いことに、割り当て手段を完全に理解しているかどうかはわかりません。あまりにも多くのメモリが割り当てられ、別のスレッドで作成されていると思われる変更可能な文字列によって解放されていないことがわかりましたが、この問題を解決する方法がわかりません! それを含むオブジェクトへのすべての参照を破棄したと思いましたが、どうやらそうではありませんか?

漏れがどこにあるかを正確に見つけるための最良の方法は何ですか? または、誰かが修正を持っている場合は、修正しますか?

4

2 に答える 2

0

WWDC 2012 のセッション "Learning Instruments" (セッション 409) を視聴できます。動画はこちら.

于 2012-09-13T15:43:37.893 に答える
0

deallocオブジェクトの実装でメッセージをログに記録することで、オブジェクトがなくなったことを確認できます。しかし、割り当てを解除しないと、そもそもそこに到達できません。

あなたが言うreferences to the object that contains itとまたseparate thread。ブロックを使用して別のスレッドで実行されるコードを記述している場合は、ブロック内で参照することによって作成された可能性があるリテイン サークルに注意してくださいself

編集:

何を言っているのかわからない場合は、Retain cycle on `self` with blocks and blocks、self、retain cycle をチェックしてください。

于 2012-09-13T15:48:36.303 に答える