【发布时间】:2012-11-10 09:15:24
【问题描述】:
我有一个程序问题,我想在 C 中声明一个 256x256 数组。不幸的是,我每次尝试声明一个该大小(整数)的数组并运行我的程序时,它都会意外终止。有什么建议?我没有尝试过内存分配,因为我似乎无法理解它如何与多维数组一起工作(尽管我是 C 新手,但请随时指导我完成它)。另一个需要注意的有趣的事情是,我可以在 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 版本)。
【问题讨论】:
-
你应该可以这样做,除非你使用的是旧的编译器(?!)(我在 Windows 上测试过,堆栈大小为 1MB)。
-
你可能会通过在本地声明它来炸毁你的堆栈。对于大多数机器来说,这本身并不是一个庞大的阵列。 SO上有很多关于如何声明和使用动态分配的二维数组的答案。搜索一下。
-
你能发布一个你如何初始化数组的代码示例吗?
-
我使用的是 8GB、64 位 Windows 7 Ultimate 机器和 i7。
-
你是如何定义
dims = 256的?这是#define或enum或const int还是只是int?在后两种情况下,您使用的是 VLA — 可变长度数组。这是 C99 功能,所以我假设您没有使用它(除非您也没有使用 MSVC)。请使用准确的信息更新问题(而不是添加 cmets)。数组占用256 KiB;这是一个用于放置在堆栈上的中等大小的数组;对于静态或动态分配的数组来说,它并不过分。
标签: c arrays multidimensional-array integer