[問題] 配置大量記憶體

作者: 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