我在C中制作3D阵列程序。
当我输入[31][11][99]
时,代码运行正常。
但是当我输入[31][11][999]
时,代码没有运行。
是因为array size
??
如果这就是原因..那么C中3D array
程序的最大数组大小是什么。
答案 0 :(得分:1)
这取决于您分配数组的位置。如果在本地/静态分配它,则取决于可用的堆栈大小。给进程的堆栈内存量取决于具体的操作系统。
如果堆空间不足,则在运行时会出现堆栈溢出。因此,您应该始终在堆上动态分配大型数组。
答案 1 :(得分:1)
最有可能的是你的堆栈空间不足。您可以使用ulimit -s
在Linux上找到堆栈的大小,它可以为您提供KiB中堆栈的大小。您的数组将包含340659个元素。假设每个元素4个字节为数组提供1362636个字节。我机器上的堆栈大小是
$ ulimit -s
8192 # KiB
你的第一个例子给出了135036 KiB。 虽然原则上可以调整堆栈大小以满足您的需要,但最好为堆上的数组分配内存(Memory allocation areas in C++ (Stack vs heap vs Static))。
这里讨论了这样做的方法: Malloc a 3-Dimensional array in C?