@陳梓瀚(vczh)
size_t idx = ( size + _lpoolXep - 1 ) / _lpoolXep - 1; 它是O(1)不?
@陳梓瀚(vczh)
為什么不可能呢? 我這兒的實(shí)現(xiàn)其實(shí)很簡(jiǎn)單,關(guān)鍵是用block里面的index,它的本質(zhì)是一個(gè)O(1)的HASH, 這樣的代價(jià)就是創(chuàng)建pool的時(shí)候: 非常有必要對(duì)緩存大小事先按需求進(jìn)行合理估計(jì)。
@陳梓瀚(vczh)
我實(shí)現(xiàn)的這個(gè)雖然有缺陷,但在我的使用范圍內(nèi),確實(shí)是嚴(yán)格O(1)的。如果要用到HASH或樹之類的就是lg(n)的了。 SIZE按冪次增長我也想過,那樣的話空間浪費(fèi)厲害,不過跨度比較大的話確實(shí)可以考慮
@hdqqq
沒有認(rèn)真看代碼吧, 只是內(nèi)存池滿了OR請(qǐng)求大小超過上限才會(huì)new delete
當(dāng)然內(nèi)存池沒有預(yù)分配,是逐步增長的