2016-09-07 79 views
1

对于C中可以包含多少元素​​是否有限制?
PS:我期待在宣布数组时会有一些空间限制,但在互联网上找不到任何这样的参考。二维整数阵列中元素的最大数量

+1

该数组不能超过SIZE_MAX字节(该常数在limits.h中定义)。具体系统可能具有较小的限制,具体取决于可用的内存量。 –

+0

可能的重复http://stackoverflow.com/questions/216259/is-there-a-max-array-length-limit-in-c –

+1

@RishikeshRaje这是一个C++的问题 –

回答

1

这取决于您的RAM或可用的内存。

i:e:当我声明全局数组a[100000][10000]时,我的程序曾经崩溃,但这个声明对于现在的系统已经很好了。

+2

这不是真的。例如,在32位Windows上,即使您的计算机有更多的RAM,也不能分配超过4,29Gb的内存。无论如何,C提供'size_t'类型作为一种方式来找出你可以在一个对象中分配多少内存。 – Lundin

+0

@Lundin:谢谢你澄清我的误解。我想我现在明白了。 – jbsu32

-1

size_t类型被定义为足够大以包含程序中任何对象的大小,包括数组。所以最大可能的数组大小可以被描述为2^(8*sizeof(size_t)字节。

为方便起见,这个值可以通过limits.h中的SIZE_MAX常量获得。它保证至少是65535,但实际上是一个更大的值,最有可能是32位系统上的2^32和64位系统上的2^64。

-1

C/C++标准强加的最大值:x * y * z <= SIZE_MAX,其中SIZE_MAX是实现定义的,x是数组的一个维度,y是另一维度,z是元素的大小(以字节为单位)。例如element_t A[x][y]z = sizeof(element_t)