我有一个程序问题需要在C语言中声明一个256x256的数组。不幸的是,每次我尝试甚至声明这样大小的数组(整数),并运行我的程序时,它都会意外终止。有什么建议吗?由于我无法理解如何处理多维数组,因此我还没有尝试过内存分配(不过您可以指导我)。另一个有趣的事情是,我可以在C语言中声明一个248x248的数组而没有任何问题,但更大的数组则不行。
dims = 256;
int majormatrix[dims][dims];
编译所用:
gcc -msse2 -O3 -march=pentium4 -malign-double -funroll-loops -pipe -fomit-frame-pointer -W -Wall -o "SkyFall.exe" "SkyFall.c"
我正在使用SciTE 323(不确定如何检查GCC版本)。
(注:该句已被翻译,无需再次翻译)
dims = 256
的?是通过#define
、enum
、const int
还是仅仅使用了int
?如果是后两种情况,那么你正在使用 VLA —— 可变长度数组。这是 C99 的一个特性,因此我假设你没有使用它(除非你也没有使用 MSVC)。请更新问题并提供准确的信息(而不是添加注释)。该数组占用 256 KiB;对于放置在堆栈上的中等大小数组来说,它并不算过大;对于静态或动态分配的数组来说,它也不算过大。 - Jonathan Leffler