[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:4249] allocator_reserve?



At Sun, 23 Feb 2003 14:45:53 +0900,
MIYOSHI Masanori wrote:

> xmalloc() でメモリを確保した直後に、高い確率で、そのメモリを 
> xfree() している部分があったので、xfree() せずに、後で使いまわし
> したほうが効率がいいと思って導入しました。

あー、最近のmemory allocatorは、そういうことは十分承知の上で
実装されています。

> *_allocator_reserve() で、使いまわせるメモリがあればそれを渡し、
>  なければ xmalloc() します。
> *_allocator_cancel() では、reserve したメモリを、次に使いまわせる
>  ように戻します。

このようにしても、通常は、殆ど効率に影響を与えないでしょう。

ま、そのうち、この辺は、xmalloc() & xfree()を使わずに、そのうち、
HeapAlloc() & HeapFree()に変えるかも。(主にheapのclarityのため)

> himi> 今はやっていませんが、LFを外部から開放するように変更したとき、
> himi> このままでは、memory leakが発生するように見えます。
> 
> これは大丈夫だと思います。
> ただし、*_allocator_reserve() と *_allocator_cancel() を対で使う
> ことを前提としています。この前提が崩れればリークします。

外部から開放した場合、(外部から、mw32_delete_logical_font()を呼び出した場合)
当然この前提は崩れますよね。

from himi