2009-03-09 6 views
1

私は、比較的大きなローカル配列を割り当てるコード例から作業しています。 (正確には32768)同じものを試してみると、スタックのオーバーフローと思われる動作が発生しています。今私は私の例がスタックを私のアプリケーションより大きく設定しているのかどうか疑問に思っていました。これは可能ですか?もしそうなら、どのように?C++でコールスタックのサイズを設定できますか? (vs2008)

+0

「コールスタック」は、通常、関数呼び出しのコンテキストを構成する関数のリストを参照します。コールのコンテキストに有効なメモリは単にスタックにすぎません。 – RedBlueThing

+0

実際、「スタック」という用語は古い用語です。 'コールスタック(call stack)'は、現在の呼び出し(つまりローカル変数とパラメータ)のコンテキスト全体を網羅しています。http://www.programmingforums.org/thread8786.html#9 –

答えて

3

Microsoftコンパイラでは、/Fを使用してスタックサイズを設定できますが、ヒープ上にオブジェクトを割り当てるだけでよいようです。ヒープではなくスタックに割り当てる理由があるはずです。

編集:This pageは、日付が間違っている可能性がありますが、プラットフォーム間でのブレークダウンが良好です。

+0

これは問題を解決しなかった。さらなる調査が必要:( –

+0

新しい質問にあなたのコードのサンプルを投稿してください。 –

+0

http://stackoverflow.com/questions/614842/why-does-this-code-corrupt-memory、すでに回答済みですが、スタックサイズは問題を解決していないので、あなたの考えは高く評価されます –

0

スタックサイズを混乱させるのではなく、単純にstd :: vectorを使用するか、または自分で配列を動的に割り当てるのはなぜですか?

1

/Fコンパイラフラグを使用して、デフォルトのスタックサイズを設定するか、CreateThread関数の2番目のパラメータとして指定できます。

0

この作業のために新しいスレッドを作成することができます。一般に、スレッドを作成するときにスタックのサイズを指定することができます。確かにvs2008のCreateThread()関数で

関連する問題