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

标签 c++ arrays windows visual-c++ size

我有以下最小测试程序:

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/

相关文章:

java - Java读取USB打印机状态

c++ - 非类型模板参数……那是一个模板! (C++)

c++ - 从方法修改指针指针字段

C++:包含内包含

arrays - 我可以迭代数组数组并将其与整数数组进行比较吗

c++ - 如何在 Windows 上将 GoogleTest 变量 GTEST_LIBRARY GTEST_INCLUDE_DIR 和 GTEST_MAIN_LIBRARY 设置为 CMake?

第二个派生类中的 C++ 初始化列表

java - 在java中使用数组生成4个不重复的随机数

java - 尝试使用 ArrayList 操作数组中的对象

windows - 使用 Symfony Process 运行异步 PHP 任务