きくたにです。またこれなんですが、

拡張モジュールの関数で、あるポインタ line を

char *line;
.....
line = malloc(...);
.....
return INT2NUM( (int) line );

で返します。ruby側で

p = hoge(a, b)

なんぞというオブジェクトとして持ってます。
それをrubyのほうから拡張モジュールの関数に渡してやります。
拡張モジュールの関数 hage(p) では

q = (char *) NUM2INT(p);

のようにして受けます。このとき、qが最初のlineを指していること
が保証できるでしょうか?
ちょっと見ダメそうですが、なぜか今は動いてます。
すげー機種依存性がある気も。

こんなことをしなくても良い方法を発見せねば。

-- 
人生を背負い投げ

菊谷 誠(Kikutani Makoto)  kikutani / sprintmail.com
                          kikutani / debian.or.jp (Linux関係のみ)