gpt4 book ai didi

c++ - 函数的堆栈分配

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:40 26 4
gpt4 key购买 nike

如以下 32 位版本所示,是否对模块/源文件中有关内存分配的函数进行了任何定量测试:

#include <windows.h>

int main()
{
wchar_t TestArray [516332] = { NULL };
}

它对 516332(或 7E0EC)成功,但对 516333 产生堆栈溢出。当然,2Gb 或 7FFFFFFF 的全局声明是合法的,但添加一个以获得 SO。

#include <windows.h>
wchar_t TestArray [2147483647] = { NULL };
int main()
{
}

在 32 位构建中使用 VS10/MCBS,但 X64 运行不佳。在 64 位或 128 位系统中,函数类型(例如 long、char void、bool)是否按比例增加?专门使用数字/表格方法搜索答案。

最佳答案

不确定我是否答对了你的问题,但是:

int main()
{
wchar_t TestArray [516332] = { NULL };
}

这里您正在达到默认 1MB 线程堆栈大小的限制(一些其他数据也已经在堆栈中)。可以使用 Visual Studio 中的 /STACK:reserve[,commit] 调整默认大小。

wchar_t TestArray [2147483647]  = { NULL };
int main()
{
}

在这里,您在 32 位系统上达到了 2GB 用户模式限制(可以使用/3GB 启动开关进行更改)。

关于c++ - 函数的堆栈分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34695775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com