増田です。

早速のご指摘ありがとうございます。感謝致します。

> ソースを呼んでみて気になる点は
>
>  * newでC++オブジェクトを割り当てているがdeleteしているよう
>    に見えない
>  * ruby_objメンバが初期化されないことがありえる

勉強になります。では、以下のように変更すれば大丈夫でしょうか?

void free_sa(mySimpleApp *app)
{
       delete app;
}

VALUE alloc_sa(VALUE klass)
{
     mySimpleApp *app;
     VALUE obj;

     app = new mySimpleApp();
     obj = Data_Wrap_Struct(klass, mark_sa, free_sa, app);
     app->ruby_obj = obj;
     return obj;
}

2008/06/02 14:13 Yukihiro Matsumoto <matz / ruby-lang.org>:
> まつもと ゆきひろです
>
> In message "Re: [ruby-ext:02325] C++のフックメソッドをRubyで書くには?"
>    on Mon, 2 Jun 2008 13:34:47 +0900, "Ichitaro Masuda" <ichitaro.masuda / gmail.com> writes:
>
> |初歩的なことで恐縮なのですが、C++の拡張ライブラリの書き方で質問です。
>
> |これで動いてはいるものの、GC的に何かやってはならないことを犯しているのではと不安です。「C++のフックメソッドに対応するRubyのフックメソッド」は通常どのように実装されるのでしょうか・・?
>
> ソースを呼んでみて気になる点は
>
>  * newでC++オブジェクトを割り当てているがdeleteしているよう
>    に見えない
>  * ruby_objメンバが初期化されないことがありえる
>
> でした。どちらも些細なことですが。他はおおむね大丈夫なんじゃ
> ないかと思いました。ま、ひとめ見ただけではわからないバグと言
> うのは珍しくはないのですが。
>
>