私はこのフォーラムに新しいですし、私は私の愚かな過ちのいずれかと親切にしてくださいまだプログラミング言語で素人午前:私は検索処理のためのkdツリーを構築する再帰関数をプログラミングしていたp古典的なスタックオーバーフロー?
。私はVisual Studio '08でC言語を使用しています。
run_FAST_corner_detection.exeで0x77063de7で未処理の例外: 0xC00000FD:今すぐコードブレークがあるとき、スタックオーバーフロー
処理のいくつかの秒後、プログラムの実行が原因、すなわちエラーを停止します
kd_node = malloc(sizeof(struct kd_node));
//this function allocates a pointer to a reserved memory of size struct kd_node.
メモリ不足の古典的な問題はありますか? スタックメモリを監視するにはどうすればよいですか? (私はこの質問が繰り返し尋ねられたことを知っていますが、正直なところ私はまだこれを行うには良い方法が見つけられていません)。
mallocによって割り当てられた動的メモリはスタックに割り当てられていませんヒープ上に割り当てられます。その関数呼び出しでスタックオーバーフローが発生する可能性がありますが、たぶんmallocである可能性があります。ヒープがメモリ不足にならないようにするには、mallocの結果をNULLでチェックします。 – Lundin
これは古典的なスタックオーバーフローのようです。再帰関数を巻き戻したり返したりする条件は何ですか?これを繰り返しても、終了条件が正しくないとクラッシュします。機能全体を投稿することにより、より良い評価が可能になります。 –
私は管理しました。 コードへのリンクは以下の通りです: https://skydrive.live.com/redir.aspx?cid=08ed71486dc5e125&resid=8ED71486DC5E125!121&parid=undefined このコードは、KDのためのKD-ツリーを作成するために使用されますツリー検索アルゴリズム。私は、再帰を避けるために尾の再帰を調べましたが、最後にifステートメントがあるため、私は実際にこの手法を使用することはできません。 私はそれを反復手順に変換することを考えていますが、樹木の作り方によってこれをどうやって行うことができるかわからないのです。 お時間をいただきありがとうございます。 – bouvett