在以下的32位构建中,有没有针对模块/源文件中内存分配的功能的定量测试:
#include <windows.h>
int main()
{
wchar_t TestArray [516332] = { NULL };
}
对于516332(或7E0EC),它是成功的,但对于516333却会导致堆栈溢出。 当然,全局声明2Gb或7FFFFFFF是合法的,但再加上一个就会导致堆栈溢出。
#include <windows.h>
wchar_t TestArray [2147483647] = { NULL };
int main()
{
}
在32位构建中使用VS10/MCBS,但X64不能很好地兼容。在64位或128位系统中,函数类型(例如long、char void、bool)是否有相应的增加?具体寻求采用数值/表格方法的答案。
int arr [1000]
的函数,那么你的0x7E0EC
将减小约0x1000
。我不确定函数的类型是什么 - 是的,从函数返回不同的类型 -struct {int a [500]; } func(...)
将比int func(...)
使用更多。“安装”并不重要,但C和C ++运行时,编译器和操作系统都将影响堆栈的实际大小,缺省大小(通常也是最大大小)。换句话说,Windows与Linux不同,但两个类似的Linux变体将相同。 - Mats Petersson