私は今このエラーを数時間デバッグしています。私はOgre3dを使ってプログラムを書いています。なぜならシンボルをロードしないので、クラッシュの場所を見つけることをより困難にしていたトレースをスタックさせることができないからです。だから、特定の関数を呼び出す前に "Starting"を印刷して関数を呼び出し、 "Stopping"を印刷した直後に書き込みます。関数全体を通して、関数Fが関数が返る直前(最後の '}'の1行上)に文字AFを印刷します。奇妙なことは、 'F'が印刷された後にクラッシュが発生したときですが、 'これは、クラッシュがどこかで起こっていることを意味しますか?私が考えることができる唯一のことは、関数中に割り当てられたメモリの一部を解放している間に何かがうまくいかないことです。私はこのようなことは一度も起こったことがない、私はそれが間違っていると確かめるためにチェックを続けます。戻り値関数がクラッシュする原因は何ですか? C++
答えて
何か変わったことや理解できないことが起こった時代の大部分は、何か他のものが原因です。
dangling pointersは、ランダムメモリセルを指しているコード(その機能から遠く離れた場所でさえも)に含めることができます。
このようなダングリングポインタを使用した可能性があり、必要なメモリセルが上書きされている可能性があります。その結果、他の場所で定義された変数や定数、あるいはコードを変更してプログラムの動作を変更しました!
Valgrindのような誤ったメモリアクセスをチェックして報告できるツールを使用してアプリケーションをデバッグすることをお勧めします。それが聞こえるものの、それはあなたの関数では、単純なエラーの可能性があり - あなたのクラッシュのソースをローカライズするために、ここでポストそれをクラッシュするコードの本当に小さな作品を書くことができますとにかく場合
おそらく、あなたの説明から。
私は下に述べたように、私は索引配列の外でメモリに書き込んでいました(私は100のスペースを割り当て、それ以上のインデックスに書き込みました)が、これはクラッシュの原因ではなかった、それは私が推測しているそのフレームの外側でスタックを台無しにして、それが戻ったときすべてが台無しになった。私はなぜ私がそのデータで遊ぶことができたのか混乱しています。 – JeanOTF
C++は管理された言語ではありません。コンパイラはできる限り静的にチェックしようとしますが、ランタイムチェックは実行されません。あなたのエラーは実行時に発生します(コードを静的に解析すると、_right_配列要素だけにアクセスするかどうかはコンパイラが判断できません)。 Valgrindは、実行時に何が起こっているかをチェックするツールです。基本的には、管理対象言語の仮想マシンの機能の一部です。 – peoro
ええ、私は過去に私が場所外のメモリにアクセスしたときに、アクセスされたメモリが私のプログラムに割り当てられたものではなかったためにsegフォールトが発生すると思います。私の年のプログラミングでは、関数内のヒープベースの配列多分それはそれだった。 – JeanOTF
おそらくは、関数が復帰していくつかのデストラクタが起動しているときにエラーが発生していることを示します。可能であれば、所有していないメモリを解放しようとするデストラクタがいくつかあります。ログのバッファの末尾を書き留めておいてください。
フラッシングしていないと気付く可能性があります出力ストリーム。 「停止中」が印刷されている可能性がありますが、stdout
を押す前にバッファリングされている可能性があります。それがあなたの間違った木を吠えることになるので、これをチェックすることを確認してください。
それは何かを発見しました。私は配列(100の大きさ)のためのスペースを割り当てていましたが、私は100を超えてインデックスされた値を修正していました。変わった部分は、これが問題ではありませんでした。私はそれが解放かより具体的には私がフレームレジスタの外のメモリに書き込んだ(私が推測している)事実であるかどうかは分かりません。 – JeanOTF
@ JeanOTF-その場合、おそらく割り当てられたブロックのフッターにいくつかのデータが上書きされています。メモリアロケータがそれを再利用しようとすると、何らかの内部データ(たとえば、次のブロックへのポインタ)を見つけることが予想され、代わりにゴミが見つかったため、おそらくクラッシュが発生しました。これはいつも起こります。 – templatetypedef
- 1. drawRectのクラッシュ - 何が原因ですか?
- 2. VS 2010 SP1 WPF Designerがクラッシュする原因は何ですか?
- 3. C#アプリケーションのクラッシュ原因
- 4. このアルゴリズムをクラッシュさせる原因は何ですか?
- 5. 原因は何ですか
- 6. 値コンバータが起動する原因は何ですか?
- 7. ObjectNormalizerがRelationshipNormalizerをオーバーライドし、コードがクラッシュする原因は何ですか?
- 8. Ifが原因でクラッシュするコード
- 9. この英雄クラッシュの原因は何ですか?エラーコード= H10
- 10. WPFアプリケーションがAppHangB1の問題イベント名でクラッシュする原因は何ですか?
- 11. このプログラムで私のアプリがクラッシュする原因は何ですか? - Androidスタジオ
- 12. これは何が原因ですか?
- 13. Chromeブラウザの拡張機能がクラッシュする原因は何ですか?
- 14. requestWindowFeature(Window.FEATURE_NO_TITLE);アプリケーションがクラッシュする原因になりますか?
- 15. UIGraphicsGetImageFromCurrentImageContext()が原因クラッシュを保持する
- 16. C++コンパイラエラーC2751 - 正確には何が原因ですか?
- 17. 複数のトグルボタンが原因でアプリケーションがクラッシュする
- 18. FuncAnimation関数が呼び出される原因は何ですか?
- 19. libzmq.dllでこのクラッシュを引き起こす原因は何ですか?
- 20. 関数の戻り値は何
- 21. Httpサービスの原因がクラッシュする
- 22. C++ false resultを生成するプログラム...原因は何ですか?
- 23. main関数 - 戻り値のポイントは何ですか?
- 24. プログラムがクラッシュする原因となる配列C++
- 25. 数字がプライムであるかどうかを定義する関数は、C++プログラムがクラッシュする原因となります。
- 26. Firefox/Firebug:Console.log( "...");原因:TypeError:Console.logが関数ではありません
- 27. CBIでABIが破損する原因は何ですか?
- 28. 解析エラー - 原因は何ですか?
- 29. セグメンテーションエラーが発生する原因は何ですか?
- 30. vテーブルがありません。原因は何ですか?
すべての種類のもの。関連するコードを表示してみませんか? –
何でもかまいません。迷惑ポインタを介してスタックを乱されますが、デストラクタが呼び出されて表示されるバグのように聞こえます。可能な限り小さなプログラムで問題を再現してください。コードを投稿する(プロセスがバグを発見しなかった場合)。乾杯、 –
コードを投稿していないと何も教えてくれません。 – Puppy