use*_*701 5 c arrays integer multidimensional-array
我有一个程序问题,我想在C中声明一个256x256数组.不幸的是,我每次尝试甚至声明一个大小的数组(整数)并运行我的程序时,它意外终止.有什么建议?我没有尝试过内存分配,因为我似乎无法理解它如何与多维数组一起工作(尽管我是C的新手,随时引导我完成它).另一个有趣的事情是我可以在C中声明一个248x248阵列而没有任何问题,但没有更大的问题.
dims = 256;
int majormatrix[dims][dims];
Run Code Online (Sandbox Code Playgroud)
编译:
gcc -msse2 -O3 -march=pentium4 -malign-double -funroll-loops -pipe -fomit-frame-pointer -W -Wall -o "SkyFall.exe" "SkyFall.c"
Run Code Online (Sandbox Code Playgroud)
我使用的是SciTE 323(不知道如何检查GCC版本).
das*_*ght 10
在C中有三个可以分配数组的地方:
malloc/ free)中,或static关键字/全局空间)中.只有自动内存对分配量有一些严格的限制(即,除了操作系统设置的限制外); 动态和静态分配可能会占用操作系统为您的进程提供的空间.
查看是否是这种情况的最简单方法是将声明移到函数之外.这会将您的数组移动到静态内存.如果崩溃继续,则它们与阵列的大小无关.
您不一定会认为“意外终止”一定是直接因为“声明一个 256x256 数组”而导致的。
建议:
1)将您的代码简化为一个简单的独立示例
2)在调试器中运行
3)当它“意外终止”时,使用调试器获取“堆栈跟踪” - 您必须识别失败的特定行
4)您还应该查找特定的错误消息(如果可能)
5)发布您的代码、错误消息和回溯
6) 请务必告诉我们您正在使用的平台(例如 Centos Linux 5.5)和编译器(例如 gcc 4.2.1)。