Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: BER圧縮のデータの読み込みについて



寺西です。

Tadamasa Teranishi wrote:
> 
> > それで、上記の解決策ですが、nmz_get_unpackw()で
> > バイト数を求めた後、直後に、buf = malloc(n * sizeof(int));
> > をすれば大丈夫だと思います。
> > しかし!!余分にメモリを確保する(可能性がある)のはいなめないのですが。。。
> 
> という前に多めにメモリを確保して、数を数えていたのでした。

ここのコメントが間違っていました。

buf = malloc(n * sizeof(int)); とするということは
buf = malloc(bersize * sizeof(int)); とするということですから、
本質的には同じことをやっています。

実際のソースでは bersize と maxhit * 2 の小さい方で確保しています。
このため、bersize が maxhit * 2 よりも大きな場合、無駄にメモリを
確保しません。なぜなら文書数 * 2 よりも大きなデータを読み込む必要が
ないためです。
このため、無駄に確保するが、多くても maxhit * 2 個分メモリを確保する
ようになっています。(bersize が極端に大きな場合に制限がかかるように
しています。)

ということです。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E