-2

我正在用 C 语言制作一个 3D 数组程序。

当我输入[31][11][99]代码时运行良好。

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

是因为array size??

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

4

2 回答 2

1

您很可能会用完堆栈空间。ulimit -s您可以使用以 KiB 为单位的堆栈大小来找出 Linux 上的堆栈大小。您的数组将包含 340659 个元素。假设每个元素 4 字节为数组提供 1362636 字节。我机器上的堆栈大小是

$ ulimit -s
8192   # KiB

您的第一个示例给出了 135036 KiB。虽然原则上可以调整堆栈大小以满足您的需要,但最好在堆上为数组分配内存(C++ 中的内存分配区域(堆栈与堆与静态))。

此处讨论了这样做的方法: Malloc a 3-Dimensional array in C?

于 2013-11-13T12:34:22.600 回答
1

这取决于您分配数组的位置。如果您在本地/静态分配它,它取决于可用的堆栈大小。为进程分配多少堆栈内存取决于特定的操作系统。

如果您用完堆栈空间,则会在运行时出现堆栈溢出。因此,您应该始终在堆上动态分配像这样的大型数组。

于 2013-11-13T11:56:02.967 回答