堆栈大小限制和静态数组

时间:2014-03-21 13:56:58

标签: c++ visual-studio-2010

我尝试将堆栈大小限制为5096字节,并将/ STACK:5096选项传递给链接器(VS2010)。编译后我检查二进制文件,可选标题中的SizeOfStackReserve确实是5096。

然后我尝试测试它并编写以下简单程序:

#include <iostream>
int main()
{

   char a[60000]; // should cause stack overflow
   std::cout << a[59999] // just to be sure, that a is not optimized away
   return 0;
}

为什么在这种情况下我没有堆栈溢出?

1 个答案:

答案 0 :(得分:1)

我虽然堆栈分配粒度是相同的页面大小。然而,事实证明这是错误的,我的系统(Win7 64位)的粒度是64Kb。因此,如果指定较小的堆栈大小,则忽略它。