svd分解一个1000X22500的数组,用纯c做的,在32位系统下运行的,但是由于左奇异矩阵是22500X22500太大,无法运算,该怎么解决?求大神指导

qq_39332917 2017-07-05 04:43:34
条件限制在32位系统下,malloc函数分配空间最大是2G,所以不能运算,改怎么解决,
...全文
292 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-07-07
  • 打赏
  • 举报
回复
2楼大神已经解答了。
氵青-风 2017-07-07
  • 打赏
  • 举报
回复
不好意思,这个问题我也没有遇到过,同求大神解答
赵4老师 2017-07-05
  • 打赏
  • 举报
回复
当程序需要使用比如2GB~1TB左右的存储时,最简单的办法恐怕得是用文件读写模拟内存读写了吧。windows参考_fseeki64函数,linux参考fseeko64函数。
FILE *fA;fA=fopen("A","rb+");_fseeki64(fA,10000000000i64*sizeof(int),SEEK_SET);fputc(fA,0);//int A[10000000000];
int B;
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fread(&B,1,sizeof(int),fA);//B=A[9999999999];
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fwrite(&B,1,sizeof(int),fA);//A[9999999999]=B;
fclose(fA);
paschen 2017-07-05
  • 打赏
  • 举报
回复
推荐使用用64位程序,如果还是要用32位,VS中可以这样,项目属性——链接器——系统——启用大地址,改成:是,这样最大可申请到3G左右的内存

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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