1、為什么使用內(nèi)存池?
通常我們習(xí)慣直接使用new、malloc等API申請分配內(nèi)存,這樣做的缺點在于:由于所申請內(nèi)存塊的大小不定,當(dāng)頻繁使用時會造成大量的內(nèi)存碎片并進而降低性能。
2、如何使用內(nèi)存池。
內(nèi)存池(Memory Pool)是一種內(nèi)存分配方式。 內(nèi)存池則是在真正使用內(nèi)存之前,先申請分配一定數(shù)量的、大小相等(一般情況下)的內(nèi)存塊留作備用。當(dāng)有新的內(nèi)存需求時,就從內(nèi)存池中分出一部分內(nèi)存塊,若內(nèi)存塊不夠再繼續(xù)申請新的內(nèi)存。這樣做的一個顯著優(yōu)點是盡量避免了內(nèi)存碎片,使得內(nèi)存分配效率得到提升。
3、內(nèi)存池管理。
最簡單的內(nèi)存池應(yīng)該是fix_pool吧,即每次分配出來的內(nèi)存塊大小是固定的。這種池子的管理結(jié)構(gòu)是一個
鏈表,鏈表的每一個節(jié)點為固定大小的內(nèi)存塊。分配的時候,直接返回鏈表的第一個節(jié)點,節(jié)點不足時,從系統(tǒng)申請大塊內(nèi)存分成多個節(jié)點加入鏈表;釋放的時候更簡單,將釋放的內(nèi)存加入鏈表頭。
posted on 2011-10-11 08:45
Yu_ 閱讀(429)
評論(0) 編輯 收藏 引用 所屬分類:
Windows程序設(shè)計