读书人

超大二维数组如何解决

发布时间: 2013-07-04 11:45:32 作者: rapoo

超大二维数组怎么解决
求各位大神帮忙。
c++程序中需要定义几个 几万*几万的数组,例如a[30000][240000],来进行计算;

结果定义了之后,vs2010显示数组过大,但我又很想要实现这么大规模的运算,请问怎么解决呢? 二维数组 C++ Visual?Studio?2010
[解决办法]
大小是 6G 多?
换 64 位的程序吧. 32 位的不行了. 还有别定义在栈上, 得从堆上分配.
[解决办法]

引用:
Quote: 引用:

你这数组需要差不多27G的内存。。你可以存在一个文件中。。每次读其中一部分进来处理。。

怎么计算的?

1楼算的是char数组,每个元素1字节,5楼算的是int数组,每个元素4字节

我不觉得新手会遇到需要这么大内存的问题
楼主最好先想想为什么需要这么大内存,是不是真的必要
[解决办法]
我说的 6G 还是按 BYTE 算的, 32 位操作系统给你的地址空间一共就只有 2G, 最多 3G, 用动态分配也不管用的. 而且动态分配的函数 malloc 的参数是 unsigned int, 240000 * 30000 已经超出 unsigned int 能表示的范围了.
[解决办法]
再补充一下,大规模的数据处理需要的绝不仅仅是大内存空间而已,从数据结构到算法,从多线程到多进程,要考虑方方面面的优化,否则就算程序能跑起来,也仅仅只是能运行而已,很难用于解决什么实际问题
所以我再次建议,楼主不要随便提需求了,先回头看看这个需求到底合不合理吧
[解决办法]
假如真的需要这么大的数据;量,试试把数据放到文件里,然后再映射到内存,然后再分批次的处理,也许好些。不过新手一般是遇不到这些问题的,也许是你想太多了呢?

读书人网 >C++

热点推荐