コールスタックの大きさ | Programming Place Plus Visual Studio編

トップページVisual Studio編

この章の概要 🔗

この章の概要です。


コールスタック 🔗

コールスタック📘 (call stack) は、関数の呼び出し履歴を記憶するために使われるメモリ領域のことです。関数の呼び出し履歴に関しては「関数の呼び出し履歴」のページを参照してください。

コールスタックのデフォルトの大きさは 1MByte となっています[1]

プログラムの実行中、コールスタックが不足してしまうと、スタックオーバーフロー📘 (stack overflow) を引き起こし、プログラムは処理を続行できなくなります。そのような場合、プログラムの工夫によって使用量をうまく抑えるか、ビルドの設定を変更してコールスタックを大きく確保するようにします。

コールスタックの大きさを変更する(リンカの設定) 🔗

コールスタックの大きさを設定する方法はいくつかありますが、リンカーの設定画面に用意されている項目を使うのが直接的で分かりやすいでしょう[2]

  1. プロジェクトのプロパティを開く(方法はこちらのページ
  2. 左側のリストから、【構成プロパティ】>【リンカー】>【システム】を選択
  3. 右側の【スタックのサイズの設定】に、バイト数を入力する

コールスタックの大きさを変更する(作成済みの実行ファイルの設定を変える) 🔗

Visual Studio に付属している editbin.exe というツールを使うと、作成済みの実行ファイルの設定を変更できます。この方法を使ってコールスタックの大きさを変更することも可能です[3]

  1. Windows のスタートメニューから Visual Studio のフォルダを探し、「開発者コマンドプロンプト for VS2017」のような項目を選択
  2. editbin.exe 対象の実行ファイル /STACK:バイト数 のように入力

コールスタックの大きさを調べる 🔗

Visual Studio に付属している dumpbin.exe というツールを使うと、作成済みの実行ファイルの内容を確認できます。この方法を使ってコールスタックの大きさを調べられます。

  1. Windows のスタートメニューから Visual Studio のフォルダを探し、「開発者コマンドプロンプト for VS2017」のような項目を選択
  2. dumpbin.exe 対象の実行ファイル /headers のように入力
  3. 出力された情報の中から、数値 size of stack reserve となっている行を探す(数値がスタックのバイト数。16進数になっていることに注意)

参考リンク 🔗


更新履歴 🔗



Visual Studio編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る