私のiPhoneアプリケーション(XCode 3.2.4、iOS3.1.3)では、RELEASEモードでアプリケーションを実行すると、すべて正常ですが、DEBUGモードではアプリケーションがEXC_BAD_ACCESS例外でクラッシュします。 アプリケーションはいくつかの複雑な計算を行います。すべてのメインコードはいくつかのC++静的ライブラリに含まれており、UIApplicationはこれらのライブラリのいずれかからオブジェクトを作成し、このオブジェクトのメソッドを呼び出します。セカンダリスレッドのスタックサイズ、DEBUGとRELEASEバージョンの重要な違い
複雑な計算を呼び出すコードをセカンダリスレッドに入れても、DEBUGモードではEXC_BAD_ACCESS例外が、RELEASEモードでは問題はありません。
次に、スレッドのスタックサイズを調べました。デフォルトでは、iOSはセカンダリスレッドで512Kバイト、メインスレッドで1024Kバイトのスレッドスタックサイズを設定します。 アプリケーションを正しく実行するには、スレッドスタックサイズに必要な最小限の値を見ました。 次の結果が見つかりました: RELEASEバージョンでは40キロバイトです。 DEBUGバージョンでは1168 KBです。
DEBUGバージョンの1168 Kバイトは、メインスレッドでアプリケーションがクラッシュする理由を説明しています(メインスレッドのデフォルトスタックサイズは1024 Kバイトです)。
私のアプリケーションのRELEASEとDEBUGバージョン(40 KB vs 1168 Kb !!!)の間で、必要なスレッドスタックサイズがどうして違うのか分かりません。私はこの問題を理解する助けをしたいと思います。
ありがとうございます。 Marc