[问题] 配置大量内存

楼主: rbufghj9713 (我只是来潜水)   2018-05-11 22:11:18
开发平台(Platform): (Ex: Win10, Linux, ...)
Linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
gcc 5.4.0
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)

问题(Question):
如果今天我需要大量的内存做运算,使用new向系统索取空间要分段索取吗?
如:
int *p=new int [40960];
变成(这边的数字只是概念而已)
int *p1 = new int[20480];
int *p2 = new int[20480];
我担心一次索取过大的内存会无法配置,请问各位都怎么处理这种问题?
以上只是闲来无事突然想到,并非现在真的有遇到问题,还请各位不吝指教
*这边是指大量计算所需要的内存,如有造成误会在此说声抱歉
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
补充说明(Supplement):
作者: jerryh001   2018-05-11 22:53:00
linked list
作者: Schottky (顺风相送)   2018-05-11 22:57:00
等无法配置再来担心吧,errror checking 记得要做可以实际写个程式来试试看啊
作者: littleshan (我要加入剑道社!)   2018-05-12 00:46:00
其实很多 memory allocator 的实作都是先向作业系统要一大块再慢慢分,所以如果你的总用量是确定的,一开始就直接配置好一大块,效能会比较好
作者: x000032001 (版废了该走了)   2018-05-12 07:52:00
一次要一大块 等到超过oom killer就会出来扫地了
作者: longlongint (华哥尔)   2018-05-12 22:21:00
如果计算本身吃内存要拼速度 还是插内存吧
作者: littleshan (我要加入剑道社!)   2018-05-14 01:01:00
我猜你的疑问是“系统剩余的内存没有连续怎么办”实际上现代的 OS 都会用 paging 来解决这种问题所以一次直接要整块就好,OS 会试图把片段组起来给你
作者: nova06091   2018-05-21 17:47:00
不客气

Links booklink

Contact Us: admin [ a t ] ucptt.com