[分享] 記憶體管理 系列文

看板C_and_CPP (C/C++)作者 (CJ Cat)時間13年前 (2013/05/07 04:14), 編輯推噓7(7016)
留言23則, 7人參與, 最新討論串1/1
最近我剛完成下學期遊戲專案用的Memory Manager 寫了些心得來跟大家分享一下 :) Part 1 of 3: The Allocator 介紹如何實作簡單的記憶體配置器 http://bit.ly/ZBNTH9 Part 2 of 3: C-Style Interface 示範如何實作C-style的記憶體配置介面 http://bit.ly/YADtvY Part 3 of 3: STL-Compatible Allocators 解釋如何實作可以跟STL容器一起使用的記憶體配置器 http://bit.ly/13dePB5 -- Blog http://blog.cjcat.net Gallery http://cjcat2266.deviantart.com ptt2 Board CJWorkshop -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 98.243.174.254 ※ 編輯: cjcat2266 來自: 98.243.174.254 (05/07 04:15)

05/07 05:04, , 1F
如果有大量物件的需求 用 http://ppt.cc/fRyf 這個好用!
05/07 05:04, 1F

05/07 05:05, , 2F
Part 3 很實用 幫助我這種記憶不好的人 可以快速改寫~
05/07 05:05, 2F
※ 編輯: cjcat2266 來自: 98.243.174.254 (05/07 07:28)

05/07 09:35, , 3F
傳統一點的話 loki::smallobject是個不錯的memory pool
05/07 09:35, 3F

05/07 09:37, , 4F
實作。最大的特點就是你只要繼承他,甚至不知道他會搞個
05/07 09:37, 4F

05/07 09:37, , 5F
pool出來,缺點大概就是有點難懂,不過還滿易用的
05/07 09:37, 5F

05/07 09:39, , 6F
boost::pool也是一種解法 不過還滿少看到有人用的
05/07 09:39, 6F

05/07 10:11, , 7F
05/07 10:11, 7F

05/07 13:30, , 8F
這文章有錯誤的地方 new跟delete非常少去call system call
05/07 13:30, 8F

05/07 13:31, , 9F
通常來說 heap的管理都在user space library都幫你做完了
05/07 13:31, 9F

05/07 13:31, , 10F
只有在你new的當下userspace heap空間不夠才會去用system
05/07 13:31, 10F

05/07 13:32, , 11F
call一次要一大塊回來 只要這一大塊還沒用完 接下來的new
05/07 13:32, 11F

05/07 13:32, , 12F
都不用call到system call
05/07 13:32, 12F

05/07 14:37, , 13F
>>jackace, linux基本上是這樣, windows不確定.
05/07 14:37, 13F

05/07 15:15, , 14F
PC上目前大部分的地方其實亂搞都沒關係
05/07 15:15, 14F

05/07 15:15, , 15F
反正RAM大CPU快OS和crt也不會太糟
05/07 15:15, 15F

05/07 15:16, , 16F
不過別的平台就需要多注意了
05/07 15:16, 16F

05/07 16:50, , 17F
用part3寫了個簡單的測試, 不曉得對不對
05/07 16:50, 17F

05/07 16:50, , 18F
05/07 16:50, 18F

05/07 21:44, , 19F
Windows也是阿
05/07 21:44, 19F

05/07 22:15, , 20F
感謝jackace指正,已將part 1該部分做修正
05/07 22:15, 20F

05/08 10:21, , 21F
boost::pool 在windows會突然很噸 不好用
05/08 10:21, 21F

05/16 17:23, , 22F
boost::pool是個比較特別的東西 他單獨砍member超慢
05/16 17:23, 22F

05/16 17:23, , 23F
這個不是只有windows有這問題 這是他演算法的關係
05/16 17:23, 23F
文章代碼(AID): #1HY0y9D9 (C_and_CPP)
文章代碼(AID): #1HY0y9D9 (C_and_CPP)