質問

私はメモリに関連し、私が思うに、である私のiPhoneアプリにはかなり奇妙な問題を抱えている壊れるます:

1つの時点で、私は私が-[sortArrayUsingFunction]で行う配列を、ソートする必要があります。

私は、例えば、ソート機能に(呼び出されることはありませんされている)void *test = malloc(2 * sizeof( int ))への呼び出しをメソッド呼び出しの前にNSLog()ようなもので、いくつかのメモリを割り当てるか、持っているいずれかの場合を除き、

の結果が正しくありません。

つまり:私は少しソート関数を呼び出す前に使用されたメモリを増やした場合のソートにのみ機能します。私はいくつかの点で、メモリが破損しているため、これがあると思います。

どのようにこのような何かをデバッグするのですか?

役に立ちましたか?

解決

あなたのコードの一部は、すでにリリースされたオブジェクトを使用しているように、

これが鳴ります。エラーのこの種のデバッグに役立つ多くのは、Mac noreferrer"> Appleの偉大基盤の一部ます。

あなたのケースのために私は、自動解放プールを無効にします(環境変数のNSEnableAutoreleasePool=NOを設定)、またはあなたがリリースされたオブジェクトにメッセージを送信する場所を見つけるためにゾンビの機能(NSZombieEnabled=YES)を使用すると思います。

他のヒント

Valgrindの下シミュレータでプログラムを実行してみます:

http://valgrind.org/する

とシミュレータの下でそれを使用する方法:

http://landonf.bikemonkey.org/code/iphone/iPhone_Simulator_Valgrind .20081224.htmlする

あなたはそれがインストールされる場所に応じてコードの例ではvalgrindのパスを変更する必要があります。

このようなものは、デバッグに挑戦することができます。しかし、私は知らない、そこ範囲外の検出など他のプラットフォーム上でのアクセスとのためのいくつかのツールがあるので、私はiPhoneのために何があるだろうと推測ます。

おそらく、あなたは、配列の2つのコピーを保存し、差異のためにそれらを比較する必要があります。違いをプリントアウト。アレイの1つに導入された「ジャンク」の性質は、それがどこから来たのかについてのヒントを与えるかもしれない。

(それを読むために他の誰かを取得し、いっそのことか)

また、ちょうどこのポイントの前に実行されるコードを通過し、それを再読み込み。あなたはバグを見つけるかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top