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