linux下分配大于2g内存的问题(c++)
答案:5 信息版本:手机版
解决时间 2020-07-26 16:35
已解决
2020-07-25 20:51
机器是64位系统linux,但好像最大只能分配2G内存,寻求一个解决方案,需要方便排序。有人说可以用list或者静态数组,请牛人指教一二,谢谢
谢谢1楼,不过我现在不需要省内存,只想要一个可行的存储方式实现内存充分利用,有没有好的方法?
谢谢4楼, 静态数组也不行么?
谢谢6楼,64位linux也做不到一个进程大于2G么?
最佳答案
2020-07-25 22:12
一个进程只能申请2G.
使用2~3个进程来解决.每个进程申请1.5G,再制做一个总控进程,操纵这几块内存,需要一点点进程间通信的手段.
=====
你这里光说几楼不好用的,这里的楼层排序会随着别人修改答案而改变的.
是否能管理大于2G的内存,不光与系统是否是64位有关,还与编译器有关.我认为现在不是在做作业,而是在解决生产问题,所以不要纠缠在问题本身上,而是集中精力先用已经确定的技术先解决掉,把合同款先拿到手.在生产环境中不能依靠想像力,最好依靠确定的技术或经验.
全部回答
1楼
2020-07-26 03:04
linux系统,可以在没有图形的环境下工作。不同发行版,具体需求不同。有的甚至能在256m下工作。如果是前些年的老版本,甚至可以在更低的内存下运行。不过,那得需要你有一定经验才行。否则,一个从来没见过命令行的新手,一旦遇到纯指令操作的系统,麻烦可不是一点。建议你在网上找那种在图形环境下内存需求不超过512m的版本。
2楼
2020-07-26 01:35
一次性申请连续空间有点难,尝试修改bootloader,在内核自检的时候跳过一段内存,然后自己再初始化使用,这算是个办法。。。
3楼
2020-07-26 00:35
大量数据排序,一般先把它们分组。
例如:分 n=20 组。
(1)打开数据文件,
读入一个数 y,
y_max = y;y_main = y;
接着读,if (y > y_max) y_max = y;
if (y < y_min) y_min = y;
直到EOF.
(2) 从小到大分组
dy = (y_max - y_min) / n;
例如,-200,-100,0, 10, 200 。。。
(3) rewind(数据文件);
读文件,
数值落入最小组的存入数组
直到EOF
排队
输出。
rewind(数据文件);
读文件,
数值落入第二组的存入数组
直到EOF
排队
输出
。。。。。。
数值落入第k组的存入数组
....
用此法,排队速度快,省内存。
不得的。不要白费心了。
4楼
2020-07-25 23:22
大量数据排序,一般先把它们分组。
例如:分 n=20 组。
(1)打开数据文件,
读入一个数 y,
y_max = y;y_main = y;
接着读,if (y > y_max) y_max = y;
if (y < y_min) y_min = y;
直到EOF.
(2) 从小到大分组
dy = (y_max - y_min) / n;
例如,-200,-100,0, 10, 200 。。。
(3) rewind(数据文件);
读文件,
数值落入最小组的存入数组
直到EOF
排队
输出。
rewind(数据文件);
读文件,
数值落入第二组的存入数组
直到EOF
排队
输出
。。。。。。
数值落入第k组的存入数组
....
用此法,排队速度快,省内存。
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯