おそらくこれは Windows プラットフォームでのみ役立つでしょう:
exe の PE ヘッダー (IMAGE_NT_HEADERS) には、次のようなレコードがあります。
typedef構造体_IMAGE_NT_HEADERS {
DWORD 署名;
IMAGE_FILE_HEADER ファイルヘッダー;
IMAGE_OPTIONAL_HEADER32 OptionalHeader;
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
typedef構造体_IMAGE_OPTIONAL_HEADER {
...
DWORD SizeOfStackReserve;
DWORD SizeOfStackCommit;
...
}
これらの値を取得する簡単な方法があります: GetModuleHandle(NULL) を使用すると、モジュールのイメージベース (ハンドル)、IMAGE_NT_HEADERS 構造 (imagebase+IMAGE_DOS_HEADER. e_lfanew) -> IMAGE_NT_HEADERS で、そこに次のフィールドがあります: SizeOfStackReserveとSizeOfStackCommit。
OS がスタックに割り当てるスペースの最大量は、SizeOfStackReserve です。
これを試すことを検討している場合は、お知らせください。サポートさせていただきます。ある時点で使用されているスタックのサイズを取得する方法があります。