我正在用 C 语言制作一个 3D 数组程序。
当我输入[31][11][99]
代码时运行良好。
但是当我输入[31][11][999]
代码时没有运行。
是因为array size
??
如果这是原因..那么C 中程序的最大数组大小是多少。3D array
我正在用 C 语言制作一个 3D 数组程序。
当我输入[31][11][99]
代码时运行良好。
但是当我输入[31][11][999]
代码时没有运行。
是因为array size
??
如果这是原因..那么C 中程序的最大数组大小是多少。3D array
您很可能会用完堆栈空间。ulimit -s
您可以使用以 KiB 为单位的堆栈大小来找出 Linux 上的堆栈大小。您的数组将包含 340659 个元素。假设每个元素 4 字节为数组提供 1362636 字节。我机器上的堆栈大小是
$ ulimit -s
8192 # KiB
您的第一个示例给出了 135036 KiB。虽然原则上可以调整堆栈大小以满足您的需要,但最好在堆上为数组分配内存(C++ 中的内存分配区域(堆栈与堆与静态))。
此处讨论了这样做的方法: Malloc a 3-Dimensional array in C?
这取决于您分配数组的位置。如果您在本地/静态分配它,它取决于可用的堆栈大小。为进程分配多少堆栈内存取决于特定的操作系统。
如果您用完堆栈空间,则会在运行时出现堆栈溢出。因此,您应该始终在堆上动态分配像这样的大型数组。