增加堆栈保留大小并不能防止堆栈溢出
Posted
技术标签:
【中文标题】增加堆栈保留大小并不能防止堆栈溢出【英文标题】:increasing stack reserve size doesn't prevent stack overflow 【发布时间】:2013-11-15 11:03:09 【问题描述】:我想在堆栈上使用一个大数组。但是,尽管我更改了堆栈保留大小,但我仍然不断出现堆栈溢出。 例如:
int main()
int a[5000000];
return 0;
在 Visual Studio 2012 中:Properties -> Linker -> System -> Stack reserve size: 10000000
是什么原因造成的?
【问题讨论】:
【参考方案1】:int
的大小可能是 4 个字节,因此数组的字节数大于元素数。 sizeof(int)*5000000
是您所需要的。 (至少)
【讨论】:
是的,这就是原因...这很奇怪,因为我之前尝试过这样做,我注意到将 1 添加到堆栈保留大小可以让我再定义一个 int(= 我的 DWORD 的大小计算机):我放入堆栈保留大小 0,它让我做一个大小为 62200 的整数数组,当我放在那里 1 时,它让我定义一个大小为 62201 的数组..以上是关于增加堆栈保留大小并不能防止堆栈溢出的主要内容,如果未能解决你的问题,请参考以下文章