web-dev-qa-db-ja.com

malloc:***エラー:解放されたオブジェクトのチェックサムが正しくありません-オブジェクトはおそらく解放後に変更されました

IOSアプリに大きな問題があります。詳細なデバッグエラーなしでクラッシュすることがあります。スタックトレースは空です。これらは、スタックトレースの2行のみです。

  1. uIApplicationMainの「-[_ UIHostedTextServiceSession dismissTextServiceAnimated:]のシンボルスタブ」のクラッシュスタート。
  2. 「libsystem_c.dylib`malloc_error_break」を報告します。

com.Apple.main-thread

Xcodeデバッガーのエラー(接続されたデバイスを使用):

malloc: *** error for object 0x208a7614: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

デバッガーからのフィードバックなしで、libsystem_c.dylibでmalloc_error_breakにブレークポイントを設定しました。この問題を解決する方法がわかりません。

36
user2776543

問題の原因を見つけるには、Xcodeで[製品]> [スキーム]> [スキームの編集]に移動し、[診断]タブですべてのMalloc設定とGuard Mallocを有効にします。

それで、アプリケーションを再度実行すると、Xcodeは問題の原因となっている行で停止します。

Scheme definition

41
Pedro Soares

デバッガを使用しているため、メモリの場所を確認する必要があります0x208a7614そして、そこに何があるかを見てください。メモリ内のデータは、何が問題なのかを把握するのに役立つ場合があります。

何が起こっているのかは、次のいずれかです。

  1. オブジェクトを2回解放しています。

  2. 割り当てられなかったポインターを解放しています

  3. すでに解放されたオブジェクトを以前指していた無効なポインタを介して書き込みを行っています

スタックトレースが空になるため、さまざまな場所でコードにデバッグログステートメントを追加して、コードのどこに問題があるのか​​を絞り込めるかどうかを確認すると便利です。 Instrumentsのメモリツールを使用することも役立ちます。 NSZombiesを有効にすることもできますが、これはObjective-Cの問題ではなく、Cの割り当ての問題のように見えます。

また、クラッシュする前に他に何かコンソールに書き込まれますか?もしそうなら、それは問題がどこから来ているかをあなたに示すかもしれません。

25
user1118321

こんにちはみんな私はあなたがnibまたはxibインターフェイスを使用していて、viewcontrollerオブジェクトをプッシュしたいときにこの問題に直面している場合、このエラーが発生し、アプリがクラッシュする(iPadでは特にエラー)場合、この解決策を見つけました解決:

//このようなフォーマット

UINavigationController *nav=[[UINavigationController      alloc]initWithRootViewController:yourViewControllerObj];

[self.navigationController  presentViewController:nav animated:true completion:nil];

この状態でプッシュしようとしないでください。

2

この問題がある場合。 product-> scheme-> diagnosis->に移動してから、mollic gaurd Edgeおよびzombie objectを有効にしてから、閉じる、次にproduct-> stop、もう一度product-buildを実行します。最高の幸運

0
MK Islam