【问题标题】: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

是什么原因造成的?

【问题讨论】:

    标签: c++ stack stack-overflow


    【解决方案1】:

    int 的大小可能是 4 个字节,因此数组的字节数大于元素数。 sizeof(int)*5000000 是您所需要的。 (至少)

    【讨论】:

    • 是的,这就是原因...这很奇怪,因为我之前尝试过这样做,我注意到将 1 添加到堆栈保留大小可以让我再定义一个 int(= 我的 DWORD 的大小计算机):我放入堆栈保留大小 0,它让我做一个大小为 62200 的整数数组,当我放在那里 1 时,它让我定义一个大小为 62201 的数组..
    猜你喜欢
    • 2011-11-20
    • 2010-10-29
    • 2021-03-17
    • 2010-11-24
    • 2015-11-22
    • 2012-02-03
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    相关资源
    最近更新 更多