この章の概要です。
コールスタック📘 (call stack) は、関数の呼び出し履歴を記憶するために使われるメモリ領域のことです。関数の呼び出し履歴に関しては「関数の呼び出し履歴」のページを参照してください。
コールスタックのデフォルトの大きさは 1MByte となっています[1]。
プログラムの実行中、コールスタックが不足してしまうと、スタックオーバーフロー📘 (stack overflow) を引き起こし、プログラムは処理を続行できなくなります。そのような場合、プログラムの工夫によって使用量をうまく抑えるか、ビルドの設定を変更してコールスタックを大きく確保するようにします。
コールスタックの大きさを設定する方法はいくつかありますが、リンカーの設定画面に用意されている項目を使うのが直接的で分かりやすいでしょう[2]。
Visual Studio に付属している editbin.exe というツールを使うと、作成済みの実行ファイルの設定を変更できます。この方法を使ってコールスタックの大きさを変更することも可能です[3]。
editbin.exe 対象の実行ファイル /STACK:バイト数
のように入力Visual Studio に付属している dumpbin.exe というツールを使うと、作成済みの実行ファイルの内容を確認できます。この方法を使ってコールスタックの大きさを調べられます。
dumpbin.exe 対象の実行ファイル /headers
のように入力数値 size of stack reserve
となっている行を探す(数値がスタックのバイト数。16進数になっていることに注意)
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |