From: Masahiro S. ()
<sa...@to...> - 2003-10-14 04:09:19
|
さかいです。 From: Masao Mutoh <mu...@hi...> Subject: Re: [ruby-gnome2-devel-ja] Re: [ruby-gnome2-devel-ja] GCについての質問 Date: Sun, 5 Oct 2003 22:25:09 +0900 > むとうです。 > > g_object_run_dispose()の宣言には /*< protected >*/ がついています。 > > つまり、サブクラスが内部で呼び出すためのもので、 > > それ以外のところから呼び出すべきではないと思います。 > > protectedってそういう意味なんですか。 glibやgtk+ではそういう意味で使っているように思えます。 > であれば、例えば、GLib::Object#destroyメソッドを作って > (中身はrun_disposeと同じ)それを呼び出すというのでもダメですか? > #同じことですけど。 > > 要は、明示的にGLib::Objectのインスタンスを破壊できるような > メソッドが無いかなぁという話なんですが。 実のところ、GObject一般を明示的に破壊するような 公開された関数は無いはずです。 > 結局のところ、なんでダメなの?という部分が全く解決できてないので > 堂々巡りの質問になっちゃってますね。 > どこかに参考になるモノないかなー。 > #ちこっとググッたんですけどみつからなかったもんで。 > #見落としかもしれませんが。 > > にしてもなんでダメなんだろう。 一言で言えば「想定していない」からでは? そのオブジェクトを使ってる他のコードが、 オブジェクトが明示的に破棄されることを想定していない場合、 Segmentation Fault する可能性だってありますし。 > ってか通常のアプリケーションはどうやって解放しているんだろう。 明示的に破壊せずに、単にunrefするだけです。 -- 酒井 政裕 / Masahiro Sakai |