24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2037  |  回复: 8

xrxing

木虫 (小有名气)

[交流] 【求助】C++程序所需内存远远大于物理内存怎么办?

编程中如何使用虚拟内存,特向各位请教!
       本人电脑物理内存为2G。因为程序使用大量数组,在运行时使用的物理内存加虚拟内存超过4G,导致程序无法运行。为满足程序对内存的需要,请问专家如何使用虚拟内存?应该如何编程操作?使用哪些函数?
      非常感谢专家的帮助!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ryhzd

木虫 (正式写手)


ajian04(金币+1):64位的系统硬件不一定支持 2010-10-17 07:58:44
xrxing(金币+3):非常感谢! 2010-10-18 00:22:51
换成64位操作系统
2楼2010-10-17 02:35:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ajian04

禁虫 (正式写手)

★ ★
xrxing(金币+2):非常感谢! 2010-10-18 00:23:19
余泽成(金币+2):谢谢参与应助! 2010-10-18 10:31:30
对虚拟内存设置说法很多,以下说法,供你参考。
内存的设定主要根据你的内存大小和电脑的用途来设定。所谓虚拟内存就是在你的物理内存不够用时把一部分硬盘空间所为内存来使用,不过由于硬盘传输的速度要比内存传输速度慢的多,所以使用虚拟内存比物理内存效率要慢,设的太大会差生大量的碎片,严重影响系统速度,设的太小就不够用,于是系统就会提示你虚拟内存太小。
1、一般情况下,可让Windows来自动分配管理虚拟内存,它能根据实际内存的使用情况,动态调整虚拟内存的大小。
2、自定义虚拟内存,一般默认的虚拟内存大小是取一个范围值,最好给它一个固定值,这样就不容易产生磁盘碎片,具体数值根据你的物理内存大小来定,一般是128MB物理内存设2 -3倍,256MB设1.5-2倍,512MB设1—1.5倍,1GB设0.5倍或不设。
3、具体步骤如下:右键单击“我的电脑”→属性→高级→性能 设置→高级→虚拟内存 更改→选择虚拟内存(页面文件)存放的分区→自定义大小→确定最大值和最小值→设置→确定。
4、虚拟内存(页面文件)存放的分区,一定要有足够的空间,硬盘资源不足,造成虚拟内存不够用;一台电脑中在一个分区设置虚拟内存就够用了,不必在其它分区再设置虚拟内存,一般设在靠近装有系统的C分区的D分区中。
3楼2010-10-17 07:59:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


xrxing(金币+2):非常感谢! 2010-10-18 00:23:50
余泽成(金币+1):谢谢参与应助! 2010-10-18 10:31:43
如果是win32的话,楼主只有2G的内存空间可以用。就算楼主装个8G内存,也不行。因为32位的寻址空间就是4G。

ps:建议搂住还是修改下算法吧,一定有更省内存的算法的。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
4楼2010-10-17 09:32:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ryhzd

木虫 (正式写手)


xrxing(金币+8):非常感谢! 2010-10-18 00:24:29
余泽成(金币+1):谢谢参与应助! 2010-10-18 10:31:53
建议方法:
1。增加物理内存,修改boot.ini文件,添加 /PAE 选项, 让xp支持4G内存。
注意:前提是你的主板支持4G内存
2。换成64位操作系统
3。修改算法,也是最可行的方法. 试想,以前在内存小的年代,大数据是怎么操作的,靠的就是算法。
     最简单的就是内存映射方法,把你的数组映射到硬盘文件,把对大数组的操作转化到硬盘文件的操作上去。
5楼2010-10-17 22:22:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xrxing

木虫 (小有名气)


ajian04(金币+1):谢谢参与交流~ 2010-10-18 13:19:33
现在系统已经换成WINDOWS 7,64位系统,下面该如何做,才能增加内存?
另外,如何在C++中使用内存映射方法?能提供参考文章或链接吗?

[ Last edited by xrxing on 2010-10-18 at 00:29 ]
6楼2010-10-18 00:26:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ryhzd

木虫 (正式写手)


ajian04(金币+1):欢迎交流~ 2010-10-18 13:19:27
xrxing(金币+2):非常感谢! 2010-10-18 15:40:39
引用回帖:
Originally posted by xrxing at 2010-10-18 00:26:04:
现在系统已经换成WINDOWS 7,64位系统,下面该如何做,才能增加内存?
另外,如何在C++中使用内存映射方法?能提供参考文章或链接吗?

[ Last edited by xrxing on 2010-10-18 at 00:29 ]

恐怕算法要你自己实现了,没有参考文章或链接。算法都和具体问题相关,如果你写过一段时间的程序,应该能够实现这种方法的。
7楼2010-10-18 01:06:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stephenliu89

银虫 (小有名气)


ajian04(金币+1):谢谢参与交流~ 2010-10-18 13:19:44
xrxing(金币+1):非常感谢! 2010-10-18 15:41:00
用那么大内存,估计是算法写的不好吧。优化下算法啊,尽量节省空间
Email:stephenliu1989@163.com
8楼2010-10-18 10:53:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ryhzd

木虫 (正式写手)


ajian04(金币+1):谢谢参与交流~ 2010-10-18 13:19:52
xrxing(金币+5):非常感谢! 2010-10-18 15:41:29
引用回帖:
Originally posted by xrxing at 2010-10-18 00:26:04:
现在系统已经换成WINDOWS 7,64位系统,下面该如何做,才能增加内存?
另外,如何在C++中使用内存映射方法?能提供参考文章或链接吗?

[ Last edited by xrxing on 2010-10-18 at 00:29 ]

你可以参考下稀疏矩阵的索引存储,《c数值算法》第二版 p50,或英文原版《Numerical Recipes in C》(见http://www.fizyka.umk.pl/nrbook/bookcpdf.html)
9楼2010-10-18 11:58:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xrxing 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见