私は、互いに最も近い2つの点とそれらの間の距離を見つける分割・征服アルゴリズムを実装しようとしています。私の最終的な解決策は、(ブルートフォースを使用するのに比べて)正しい答えを見つけるが、時間の約1/3はセグメンテーションフォールトエラーを返すだろう。私はここ2、3日間この問題を修正しています。そこに印刷ステートメントを追加していますが、問題を見つけることができませんでした。もし誰かが私のコードを見たらそれを感謝します。再帰関数は時々セグメンテーションフォールトを返す
答えて
あなたの「除算」ループは、X
とY
の要素数が同じであることを前提としています。 Y
の数字がX
未満の場合、不確定な動作が発生します。これは面白い結果やクラッシュになる可能性があります。
解決策を提案しますか?置き換えられるべきほんの数行、そのコメントされた置き換え(なぜ必要なのか) –
意味があります。ループを2つに分割しようとしました.1つは 'Y
ベクターのアクセス方法を変更してみてください。 Vector subscript-operatorは、少なくとも私の見解からはコンパイラ/プラットフォームによってはエラティックな動作をしているようです。 私は問題がそれがリンクリストであることから来て、メモリ内で連続していないという結果に終わったと思いますが、それは単なる推測です。(EDIT:STD ::ベクトルは、メモリ内で連続している、問題は何か他のものがある)のような、(簡単peasy auto
キーワードを持つ)の代わりにイテレータを使用してみてください:これはあなたのケースのために働く
for (auto iter = Yprime.begin(); iter != Yprime.end(); iter++) {
// Your code here
}
希望を!
ちょうどそれについての私の記事を編集した後、あなたのコメントを見ました。申し訳ありません。しかし、私は明示的に言った**しかし "それはちょうど推測です**"。だからあなたは私が間違っていると言って間違っている。それを試してみてください。LLVMでは添え字演算子を使ってセグメント化エラーが発生します。 – Cedric
提案していただきありがとうございます。このように私のコードを再実装するのにはしばらく時間がかかりました。それでも私は同じエラーになりました... – Novice
それを聞いて申し訳ありません...私は一度同様の問題を抱えていましたが、それを解決しました...そうでなければ、私が見る唯一の他の事は、 'abs(Y [i ] .x - mid.x)
- 1. 再帰セグメンテーションフォールト
- 2. 再帰呼び出し時のセグメンテーションフォールト
- 3. PHPで再帰関数を返す
- 4. 再帰関数から値を返す
- 5. 関数または値を返す:再帰的なpython関数
- 6. テール再帰(@tailrec)再帰関数対非再帰関数スカラースタックオーバーフローエラー?
- 7. 再帰中のcython libcpp.vectorセグメンテーションフォールト
- 8. 再帰関数は
- 9. 関数を返す関数の再帰呼び出し
- 10. 再帰関数
- 11. 再帰関数
- 12. 再帰関数
- 13. 再帰関数
- 14. C++の再帰関数からmainへの文字列を返すときにセグメンテーションフォールトが発生する理由
- 15. 再帰関数は空の配列を返します
- 16. 再帰的なPython関数から値を返すには?
- 17. Javascriptの再帰関数は未定義を返します
- 18. 再帰は、ラムダ関数
- 19. 複数の配列とリストを返す再帰関数
- 20. C#再帰関数
- 21. JQuery再帰関数?
- 22. LINQ再帰関数?
- 23. 再帰ソート関数
- 24. 再帰関数データ
- 25. 再帰関数錆
- 26. Python再帰関数
- 27. Python再帰関数
- 28. 再帰関数C++
- 29. 再帰関数python
- 30. 再帰関数5
デバッガはセグメンテーションフォルトをどこに配置しますか? – Cedric
毎回同じ入力データまたは異なるデータを使用していますか?関数が再帰的であるとすれば、スタック領域が不足している可能性があります。スタックを増やして、プログラムをクラッシュさせるデータを再実行してみてください。 – iksemyonov
@Cedricはデバッガを試したところ、 'for(j = i + 1; j
Novice