限制数组类型的大小,同时还没有实例

Limit to size of array type, while there's not yet an instance

我有以下最小测试程序:

struct Test { 
    double contents [1000000000];
};

int main () {
    return 0;
}

它拒绝编译,即使编译器不知道我是否会在堆栈或堆上静态实例化 Test。 为什么编译器会抱怨? 堆上的对象是否也限制为 2GB?

编译报错:test.cpp(2):错误C2148:数组总大小不得超过0x7fffffff字节

平台:Windows10 64 位,16GB 内存

编译器:Microsoft (R) C/C++ 针对 x64 优化编译器版本 19.16.27027.1 版权所有 (C) Microsoft Corporation。保留所有权利。

这似乎是 MSVC 的限制。我尝试使用 32 位 (x86) 和 64 位 (x64) 编译器编译您的代码并得到相同的结果(使用编译器版本 19.13.26132,MSVC 2017 进行测试)。