首页 > 解决方案 > 限制数组类型的大小,虽然还没有实例

问题描述

我有以下最小测试程序:

struct Test { 
    double contents [1000000000];
};

int main () {
    return 0;
}

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

编译报错:test.cpp(2): error C2148: total size of array must not超过 0x7fffffff bytes

平台:Windows 10 64 位,16GB RAM

编译器:Microsoft (R) C/C++ 优化编译器版本 19.16.27027.1 for x64 版权所有 (C) Microsoft Corporation。版权所有。

标签: c++arrayswindowsvisual-c++size

解决方案


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


推荐阅读