Kishima's Hateda log

はてなダイアリー記事の保管庫

RHGを読む 

やっぱりメモリの扱いとかどうなってんのか、気になって夜も眠れない人種として「Rubyソースコード完全解説」を読んでおこうと思った。
ときどきメモしていくつもり。

第2章 オブジェクト より
http://i.loveruby.net/ja/rhg/book/object.html

RubyのArrayは配列であって「リスト」ではない。 だから要素数が大きく変わればrealloc()がかかるし、末尾以外に要素を挿入 すればmemmove()が起こる。

おお、そうなのか。mallocとかreallocとかしてるんだ。あらかじめ多めに取って、reallocを減らすと。
以前、mallocを数バイト単位で天文学的な回数繰り返すプログラムを書いたら、プログラムが挙動不審に陥ったことを思い出した。スラブからとってきているのであれば、フラグメンテーションが原因という訳でもないのだろうけど、あれはなんだったんだろう。

第2章 オブジェクト より
http://i.loveruby.net/ja/rhg/book/object.html

リテラル式を使って生成された文 字列オブジェクトはどれも一つのchar[]を共有して作成される。

ほうほう。フラグで共有を管理していると。
オブジェクトへの代入処理が気になる。