【问题标题】:Maximum number of elements in a 2D integer array二维整数数组中的最大元素数
【发布时间】:2017-01-14 15:13:28
【问题描述】:

2D integer array 可以在C 中包含多少个元素有限制吗?
PS:我期待在声明数组时会有一些空间限制,但在互联网上找不到任何此类参考。

【问题讨论】:

  • 数组不能超过SIZE_MAX字节(这个常量在limits.h中定义)。特定系统的限制可能会更小,具体取决于可用内存量。
  • @RishikeshRaje 这是一个 C++ 问题

标签: c memory multidimensional-array


【解决方案1】:

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

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

【讨论】:

  • 这不是真的。例如,在 32 位 Windows 上,即使您的计算机具有比这更多的 RAM,您也不能分配超过 4,29Gb。不管怎样,C 提供了size_t 类型作为一种方法来找出你可以在一个对象中分配多少内存。
  • @Lundin :感谢您消除我的误解。我想我现在明白了。
【解决方案2】:

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

为了方便,这个值可以通过limits.h中的SIZE_MAX常量来获取。它保证至少为 65535,但实际上是一个更大的值,在 32 位系统上很可能是 2^32,在 64 位系统上很可能是 2^64。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      相关资源
      最近更新 更多