我在使用 Microsoft Visual Studio-2005 编译器处理 C 代码时遇到了一个问题。
我试图静态声明一个大缓冲区:
int gbl_data[4096*4096*256];
编辑:此声明是头文件中的全局变量。
它给出了一个编译错误——“<strong>无法分配一个常量大小为 0 的数组”。
意味着不知何故 4096X4096X256 的大小变得比 MAX_INT_LIMIT 大小 (2^31) 太大,并且可能会环绕并变成 -ve 左右。但是它应该将错误作为“负下标”。
我尝试将常量转换为 4096UL x 4096UL x 256UL ,仍然是相同的编译错误。
这个错误的原因是什么?
是因为物理内存大小不足以分配这个大大小的缓冲区还是什么?
解决方法是什么?
谢谢。
-通用汽车。