注册 登录
编程论坛 VC++/MFC

求解数组过大则么办

墨C 发布于 2015-10-16 21:18, 2601 次点击
我编的程序中涉及到30351*30351的二维数组,编译和执行时出现以下问题:
1、编译时,出现“error C2148: 数组的总大小不得超过 0x7fffffff 字节”的问题;   
2、如果我把数组调小一点,编译时没有错误,但一运行直接弹出如下对话框:xxx.exe已停止运行:1)联机检查解决方案并关闭该程序2)关闭程序3)调试程序
3、如果再把数组进一步调小,则会编译和执行都能成功
6 回复
#2
yuccn2015-10-19 12:10
用new 出来的即可,别用局部的
#3
农民工2015-10-20 09:01
要想从根子上解决,必须调整策略,可以说出来,大家帮你想个对策
#4
yangfrancis2015-10-26 08:23
如果有效数据远远低于30351*30351这么多个可以采用稀疏矩阵存储方式,改用一维数组的结构体类型存储,结构体包括值域,横坐标域和纵坐标域。不过只有当有效数据数量少时才有用。
#5
墨C2015-10-29 09:18
回复 3楼 农民工
你好,我想求解一个线性方程组,就是它的系数矩阵大概是30351*30351那么大,每次运行都提示和上面一样,该怎么办
#6
墨C2015-10-29 09:19
回复 4楼 yangfrancis
你好,我想求解一个线性方程组,就是它的系数矩阵大概是30351*30351那么大,每次运行都提示和上面一样,该怎么办
#7
农民工2015-11-05 08:43
你申请一个链表,每个链表指向30351长的空间
如果仍然申请不成功,那建议看看内存映射
使用内存映射时 建议用Z形次序排列数组
而且求矩阵时还要有个“大数类”来支持,这个类 我以前写过,程序员联合之家里有下载
1