c++ - 限制数组类型的大小,虽然还没有实例
问题描述
我有以下最小测试程序:
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。版权所有。
解决方案
这似乎是 MSVC 的限制。我尝试使用 32 位 (x86) 和 64 位 (x64) 编译器编译您的代码并得到相同的结果(使用编译器版本 19.13.26132、MSVC 2017 测试)。
推荐阅读
- linux - GCC 将 uint8_t 和 uint16_t 解释为已签名?
- python-3.x - 无法使用 matplotlib 绘制 3d 条形图
- python - 如何在网上抓取谷歌学者每年每篇论文的引用次数?
- css - React:如何以编程方式在反应组件中设置元素的宽度和高度
- node.js - 如何使用 Node 12 导入 rxjs 静态函数?
- php - 如何将多个变量发送到 codeigniter 的视图?
- python - 如何为所有其他导入的模块导入一个模块?
- virtual-machine - Vagrant GuestAdditions 问题
- python - 如何提取具有相同值的段?
- laravel - 如何实现加载资源的 Laravel 模型