2013-10-01 :-(
_ 午後
1300 受け入れなど
_ [メモリ][malloc][メモリプール][メモリ管理]malloc/free などが在るのにメモリ管理機能を自作する動機はなんなのか
つまりこういうことだってばよ?
Effective C++
(pp. 267-269)
50項「どういうときにnewとdeleteの定義を自分で書くとよいか理解しよう」
- 使用上の注意を見つけるため
- 動的なメモリ管理に関して統計データを集めるため
- メモリの確保と解放のスピードを上げるため
- デフォルトのメモリ管理が使う無駄なメモリを減らすため
- デフォルトのメモリ確保で行われる中途半端なアライメントを補う
- 関係あるオブジェクトをまとめ置きする
- 特別な動作をさせる
あわせて読みたい?
- C言語におけるメモリプールの実現方法 - S.T.K Wiki
- 2001年12月号 特集 第1章
- カスタムメモリマネージャと高速なメモリアロケータについて
- アラインメントの大きなメモリ領域を用いて, 高速かつメモリ効率の良い多数の集合を実現する方法
アプリを高速化したいなら,できるだけ malloc/free を呼び出す頻度を減らすこと. そのためには1回の malloc で確保した大きな領域 (メモリプール) に多数のオブジェクトを詰め込む必要がある (これは省メモリにもなる) が, どのオブジェクトを同じ領域に入れるべきかはオブジェクトの寿命 (extent),サイズ, アラインメントなどを考慮して決める必要がある. 特に,寿命を知っているのはアプリケーションだけだ. 目的に合ったメモリプールならば,malloc/free をそのまま使用する場合に比べて数十倍以上速くなることもある.
4894714515