【问题标题】:declare array 2^32 size in 32bit OS [duplicate]在 32 位操作系统中声明数组 2^32 大小 [重复]
【发布时间】:2014-09-06 19:47:59
【问题描述】:

我想在 32 位操作系统上为整数哈希表声明数组 2^32 大小。告诉我该怎么做? 它给了我内存不足的异常。

【问题讨论】:

  • 很高兴看到一些代码或至少告诉我们为什么您需要这样大小的表格

标签: c# hash


【解决方案1】:

您根本无法做到这一点。在 32 位 CLR 中,所有对象的大小必须小于 2GB。

即使在 64 位 CLR 中,您也必须指定一个特殊标志来启用更大的数组 (<gcAllowVeryLargeObjects>) - 如果您的数组是整数数组,那么您实际上需要 16GB。您似乎不太可能在 32 位操作系统上拥有这么多物理内存。

您可以通过创建一个由多个较小数组组成的“逻辑”数组来在某种程度上解决这个限制,但我很少认为这是一个好主意。基本上,您应该重新设计或使用更适合您要求的操作系统。我怀疑重新设计可能是最好的方法。

【讨论】:

  • +1。 “不太可能在 32 位操作系统上拥有 16GB”太棒了……实际上你根本无法做到这一点(忽略像 PAE 这样的间接解决方案)。
  • @AlexeiLevenkov:像 PAE 这样的事情是我不想声称它绝对不可能的原因 ;)
  • @AlexeiLevenkov:是的,没问题。我想我有一个相当厚的皮肤,这甚至不是一个痒痒的;)
猜你喜欢
  • 2011-05-04
  • 2011-07-06
  • 2013-08-29
  • 2013-10-31
  • 2012-02-04
  • 2013-04-12
  • 2015-09-26
  • 2011-02-20
相关资源
最近更新 更多