超大的二维数组(编译无法通过),有何替代办法。在线等

knight8210 2010-12-06 06:41:26
需要定义30,000 * 30,000 的二维数组。
机器情况:32位的系统,4G内存。

提示,引发类型为“System.OutOfMemoryException”的异常。请确保数组大小正确。

请问有没有可替代的办法 完成这个数组。
高人现身!
...全文
247 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-12-06
  • 打赏
  • 举报
回复
简单说就是超大数组,换成多个小数组的交错数组

int[][] arr2 = new int[30000][];
for (int i = 0; i < arr2.Length; i++)
{
arr2[i] = new int[30000];
}

但超过2G的内存分配,需要用VirtualAlloc。但你需要这么多内存么?
king_827 2010-12-06
  • 打赏
  • 举报
回复
是的,通过数据库实现比较理想.
一下子处理整笔数据普通服务器很吃力.
把数据分组处理吧.
luozhongxian001 2010-12-06
  • 打赏
  • 举报
回复
LZ这个问题给力啊!我表示支持下。
knight8210 2010-12-06
  • 打赏
  • 举报
回复
LS 这个经典算法我看了有几天了。 具体算法思想 代码什么的 我感觉自己理解的大概美错
hookyzlr 2010-12-06
  • 打赏
  • 举报
回复
最短路径算法,不是像你这么用数组实现的吧。。
研究下图算法,Dijkstra,弗洛伊德都是比较经典的最短路径算法
knight8210 2010-12-06
  • 打赏
  • 举报
回复
楼上的 大神,这个帖子我看到了。但 没搞明白 是怎么个方法。毕竟英文有点费劲
knight8210 2010-12-06
  • 打赏
  • 举报
回复
是搞一个 最短路径算法。
是有三万个node,现在定义每两个node之间的距离。
就是一个30000*30000 的数组啊。
郁闷啊,貌似32位的系统 最多是16000*16000(*4) = 2G
int64 2010-12-06
  • 打赏
  • 举报
回复
想想是不是有别的方法实现你的需求
phil999 2010-12-06
  • 打赏
  • 举报
回复
楼主大神要在内存里搞9亿个对象?
hookyzlr 2010-12-06
  • 打赏
  • 举报
回复
为什么要定义那么大的数组呢?是否真的是能充分利用每个空间?
说说你具体要实现什么功能
风之影子 2010-12-06
  • 打赏
  • 举报
回复
用数据库来实现吧
knight8210 2010-12-06
  • 打赏
  • 举报
回复
大神们 给个说法

难道就只能用文件方式代替?

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧