From: m-ohkubo@... (Mitsuhiko OHKUBO) Date: 2007-07-15T00:17:32+09:00 Subject: [ruby-dev:31224] Re: 構造体オブジェクトのcloneメソッド呼び出しでメモリリーク発生 大久保です。 すごく今更感が漂っていますが、ruby-dev:31172に記載のパッチの うちstableの方だけメモリリークが起こらないことを確認しました。 ノーマル1.8.6-p36+パッチで現象再現コードを実行して15分ほど放 置し、メモリ使用量が増加しないことを確認しました(ノーマルの1.8.6-p36 では増加していった)。 時刻 2007/07/12 06:00:57 Nobuyoshi Nakada さんは書きました > なかだです。 > > At Thu, 12 Jul 2007 01:52:56 +0900, > Mitsuhiko OHKUBO wrote in [ruby-dev:31186]: > > > その後考えてみたのですが、Structのサイズは通常変更不可能なこと > > > から、エラーにすべきではないかという気がして来ました。 > > でしたら、サイズが異なる場合だけでなく、メンバ名リストが一致 > > しない場合もエラーにしてはどうでしょう?既存コードへの影響が気に > > なりはしますが、、、。 > > メンバ名リストは、Structサブクラスのインスタンス個別ではなくて > Structサブクラス自身にしかないので、その比較はできません。 > > 逆に、その比較は > if (!rb_obj_is_instance_of(s, rb_obj_class(copy))) > でやっているともいえますが。 なるほど、メンバ名リストが異なるオブジェクトをinitialize_copy に渡すと例外を投げる処理は従来からあったのですね。了解しました。 ----