llvmを使用してXcode 4.2でリリースビルドを動作させるのに奇妙な問題が発生しました。リリーススキームの最適化設定はすべて無効にしています。リリースビルドには、デバッグビルドのすべての設定と一致することがわかります。これに関係なく、物理ライブラリであるBox2Dから構造体を操作する場合、次の問題が発生します。リリースビルドでエラーが発生しました。std :: vectorの構造体をコピーします。
b2CircleShape* circleShape = new b2CircleShape();
circleShape->m_p.Set(0,0);
circleShape->m_radius = m_radius;
b2FixtureDef fixture;
fixture.shape = circleShape;
fixture.density = m_density;
m_fixtureDefs.push_back(fixture); // std::vector
b2FixtureDef fix2 = fixture;
b2FixtureDef fix3 = m_fixtureDefs[0] // EXC_BAD_ACCESS
m_fixturesへのアクセスのすべてのインスタンスを削除すると、問題は発生しません。開発スキームで実行すると、エラーは発生しません。誰かがそれを探すためにエラーのために正しい方向に私を指すことができれば、私は、本当に、本当に混乱していますずっと
EDITいただければ幸いです。
もっと面白いものを
for (vector<b2FixtureDef>::iterator i = m_fixtureDefs.begin() ; i != m_fixtureDefs.end(); ++i)
{
}
これはループに表示されます永遠に、私は非常に混乱させる。構造体m_fixturesDefに何らかの問題があるようですが、なぜこのような変種でしか発生していない奇妙な破損が起こっているのかどうかわかりません。
メモリエラーのように見えるので、デバッグは難しくなります。あなたはvalgrindでそれを実行しようとする必要があります。また、 'circleShape'が' m_fixtureDefs'の前に削除されることもありますか? – juanchopanza
私は今それを試みます。いいえ、最初の抽出はコード内で「そのまま」です。 – Tomas
デフォルトコンストラクタb2FixtureDef :: b2FixtureDef()をチェックし、コンストラクタb2FixtureDef :: b2FixtureDef(const b2FixtureDef&)b2FixtureDef :: operator =(const b2FixtureDef&)をコピーします。変数値とプログラムフローを表示するには、debug printを使用します。 – alexander