/Gs(控制堆栈检查调用)

控制堆栈探测。

/Gs[size]

参数

  • size
    (可选)在启动堆栈探测之前局部变量可以占用的字节数。 如果在不指定 size 参数的情况下指定 /Gs 选项,则这与指定 /Gs0 的效果相同。

备注

堆栈探测是编译器插入到每个函数调用中的代码序列。 堆栈探测启动时,它在内存中良性延伸存储函数的局部变量所需的空间量。

如果函数的局部变量需要的堆栈空间多于 size 字节,则启动它的堆栈探测。 默认情况下,当函数需要的堆栈空间多于一页时,编译器将生成启动堆栈探测的代码。 这等效于 x86 的 /Gs4096、x64 和 ARM 平台的编译器选项。 此值使应用程序和 Windows 内存管理器可以动态增加运行时提交给程序堆栈的内存量。

备注

/Gs4096 的默认值使 Windows 应用程序的程序堆栈可以在运行时适当增长。我们建议,除非有确切的理由,否则请不要更改默认值。

某些程序(如虚拟设备驱动程序)并不需要这种默认堆栈增长机制。 在这些情况下,不需要堆栈探测,通过将 size 设置为大于任何函数(将需要局部变量存储)的值,可阻止编译器生成堆栈探测。 /Gs 和 size 之间不允许有空格。

/Gs0 为需要局部变量存储的每个函数调用激活堆栈探测。 这可对性能产生负面影响。

可以通过使用 check_stack 打开或关闭堆栈探测。 /Gs 和 check_stack 杂注对标准 C 库例程没有影响;它们只影响你编译的函数。

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开项目的**“属性页”**对话框。 有关详细信息,请参见如何:打开项目属性页

  2. 选择 C/C++ 文件夹。

  3. 选择**“命令行”**属性页。

  4. 在**“附加选项”**框中键入编译器选项。

以编程方式设置此编译器选项

请参见

参考

编译器选项

设置编译器选项