In message <E12q75O-0003Oq-00 / ev.netlab.co.jp>
matz / netlab.co.jp writes:

> |  でも、それよりも気になって来たんですが、結果はどうやって返って来るん
> |でしょう。
> |
> |1. 引数の string 自体、読んだバイト数は string.size
> |2. 読んだバイト数、string.size 自体は変更無し
> 
> たぶん1じゃないですかね。

考えてたのは

    buf = "\0"*256
    inf.read_with_buf(buf)

がほぼ

    fread(RSTRING(buf)->ptr, 1, RSTRING(buf)->len, inf);

になるというもの.返り値は実際に読み込んだバイト数.


> |  あたりが思い付くんですが、1.だと結局毎回新たにバッファ用の Stringを
> |作りなおさなきゃいけないだろうし、2.だと無効なデータが後ろにくっついた
> |まま、長さは別途管理というかなりキモチわるい状態になってしまって、結局
> |そのあと有効な部分だけを切り出さざるを得ないとか、メリットが生きて来な
> |いんじゃなかろうかと。
> 
> たぶんreallocを行うことになると思いますので、うまくいけば
> mallocが減るというくらいじゃないかと。あと、GCの回数が減るの
> も嬉しいかも。

だもんで,一度作ったオブジェクトが必ずそのまま使いまわされる,と.もち
ろんこれはループ中で何度も同じ大きさのブロックの読み込まないといきてこ
ないので,だいぶ特定用途向けになってしまいます.

# で,「需要はあるかなあ」と.


-- 
柳川和久 @ 東大阪市 . 大阪府                                   May 12, 2000
アリオッチ,アリオッチ,血と魂を御身に捧ぐ!