[問題] 配置大量記憶體

看板C_and_CPP (C/C++)作者 (我只是來潛水)時間7年前 (2018/05/11 22:11), 7年前編輯推噓5(508)
留言13則, 6人參與, 7年前最新討論串1/1
開發平台(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): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.63.209 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1526047881.A.CF9.html

05/11 22:53, 7年前 , 1F
linked list
05/11 22:53, 1F
謝謝回覆,這邊是指一個node裡面有很多空間嗎?有點像liked list + array這樣嗎?感 覺好像也是個不錯的解法

05/11 22:57, 7年前 , 2F
等無法配置再來擔心吧,errror checking 記得要做
05/11 22:57, 2F

05/11 23:00, 7年前 , 3F
可以實際寫個程式來試試看啊
05/11 23:00, 3F
了解,謝謝回覆,今天主要想問問看各位有沒有什麼要注意的細節(沒想到要做error che cking(掩面) ※ 編輯: rbufghj9713 (111.249.63.209), 05/11/2018 23:08:23

05/12 00:46, 7年前 , 4F
其實很多 memory allocator 的實作都是先向作業系統要
05/12 00:46, 4F

05/12 00:47, 7年前 , 5F
一大塊再慢慢分,所以如果你的總用量是確定的,
05/12 00:47, 5F
因為我看有些實作也是這種方法,不過是擔心配置太多無法分出一塊完整記憶體

05/12 00:48, 7年前 , 6F
一開始就直接配置好一大塊,效能會比較好
05/12 00:48, 6F

05/12 07:52, 7年前 , 7F
一次要一大塊 等到超過oom killer就會出來掃地了
05/12 07:52, 7F
了解,又學到新東西,謝謝分享 ※ 編輯: rbufghj9713 (111.249.63.209), 05/12/2018 15:39:32

平常放檔案或資料庫 要算之前才讀出來
05/12 15:38 ※ 編輯: rbufghj9713 (111.249.63.209), 05/12/2018 15:40:43 請問這種使用方式在CAD或是需要大量計算的程式上常見嗎?還是比較像是某些伺服器內 程式的寫法 ※ 編輯: rbufghj9713 (111.249.63.209), 05/12/2018 15:42:11

05/12 22:21, 7年前 , 9F
如果計算本身吃記憶體要拚速度 還是插記憶體吧
05/12 22:21, 9F
謝謝回覆,我加個條件以免大家誤會。 ※ 編輯: rbufghj9713 (111.249.63.209), 05/13/2018 10:50:12

05/14 01:01, 7年前 , 10F
我猜你的疑問是「系統剩餘的記憶體沒有連續怎麼辦」
05/14 01:01, 10F

05/14 01:01, 7年前 , 11F
實際上現代的 OS 都會用 paging 來解決這種問題
05/14 01:01, 11F

05/14 01:02, 7年前 , 12F
所以一次直接要整塊就好,OS 會試圖把片段組起來給你
05/14 01:02, 12F
是的,因為敘述不清造成大家的困擾了,不過沒想到系統會自動做這塊,這次學到很多, 謝謝各位大大的回答 ※ 編輯: rbufghj9713 (111.249.65.117), 05/14/2018 11:33:00

05/21 17:47, 7年前 , 13F
不客氣
05/21 17:47, 13F
文章代碼(AID): #1QzQI9pv (C_and_CPP)
文章代碼(AID): #1QzQI9pv (C_and_CPP)