什么是C中的最大3D数组大小

时间:2013-11-13 11:50:53

标签: c multidimensional-array max-size

我在C中制作3D阵列程序。

当我输入[31][11][99]时,代码运行正常。

但是当我输入[31][11][999]时,代码没有运行。

是因为array size ??

如果这就是原因..那么C中3D array程序的最大数组大小是什么。

2 个答案:

答案 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?