2012-05-02 9 views
2

ビルド設定でGCC_OPTIMIZATION_LEVELがNone [-O0]を使用していて、他の最適化レベルを使用しているときにEXC_BAD_ACCESSエラーが発生したときにコンパイルして正常に動作するXcode 4.3.2 iOS 5.1プロジェクトがあります。私のプロジェクトでは、GCC_VERSIONがApple LLVM 3.1(デフォルト)に設定されています。これは自分のコードに問題があることを示していますか?Xcode LLVM 3.1とGCC_OPTIMIZATION_LEVEL

+0

最適化*と*デバッグ記号の両方でコンパイルすることができますので、プログラムをデバッグして問題がどこにあるのかを知ることができます。 – trojanfoe

+0

この問題は、コードの前の値が割り当てられている(非原子的で強力な)プロパティにアクセスするコードの簡単なセクションにあります。 ARCがプロパティを保持していない場合と同じですが、最適化が有効になっている場合のみです。 – Erik

答えて

0

多くの場合、コードに問題があることを示します。同様に:

  • アクセスすでに解放済みメモリ
  • 読み取りまたは非初期化された変数やクラスのメンバー
  • 、多くの他の多くを使用して割り当てられた配列
  • の範囲外のメモリを書く...

まれに、この種のクラッシュがコンパイラのバグであることが判明しました。しかしそれはまれです。より頻繁にそれがあなたのコードの問題です。

クラッシュするコードを特定し、そのコードの近くでどのように変数が使用されているかを確認してください。すべてが使用/割り当て/初期化/解放されていることを確認してください。

+0

はい、私のコードに問題がありました。私は最初にコピーせずに、後で使用するためにブロックを辞書に格納していました(作成したスコープを破棄した後)。振り返ってみると、最適化がなくてもうまくいくのは驚きです。 – Erik

関連する問題