c – 函数的堆栈分配

是否有关于内存分配的模块/源文件中的函数的定量测试,如以下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线程堆栈大小的限制(其他一些数据也已经在堆栈上).可以使用/ STACK调整默认大小:在Visual Studio中保留[,commit].

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

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

点赞