我有以下最小测试程序:
struct Test {
double contents [1000000000];
};
int main () {
return 0;
}
它拒绝编译,即使编译器不知道我是在堆栈上还是在堆上静态实例化 Test。 为什么编译器会提示? 堆上的对象是否也限制为 2GB?
编译报错:test.cpp(2): error C2148: total size of array must not exceed 0x7fffffff bytes
平台:Windows 10 64 位,16GB 内存
编译器:Microsoft (R) C/C++ 优化编译器版本 19.16.27027.1 for x64 版权所有 (C) Microsoft Corporation。保留所有权利。
最佳答案
这似乎是 MSVC 的限制。我尝试使用 32 位 (x86) 和 64 位 (x64) 编译器编译您的代码并得到相同的结果(使用编译器版本 19.13.26132,MSVC 2017 进行测试)。
关于c++ - 限制数组类型的大小,同时还没有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56518084/