なかだです。

At Wed, 07 Jul 2004 19:14:06 +0900,
米倉正和 wrote in [ruby-ext:02282]:
> このオブジェクトはイメージから一部の操作用領域を作る機能があるのですが、
> その際にimageDataの示す先のアドレス空間を共有しています。ですので、切り
> 出したオブジェクトが開放されると異常終了をしてしまうようなのです。
> 	img = OpenCV::IplImage.new(100, 100)
> 	target = img.get_matrix(0, 0, 10, 10)
> 	# => img (0,0)の位置から10x10の操作用領域を切り出す
> 	# 例えばsubimg.fill(0x000000)でこの部分だけ黒く塗るとか…
> 	target = "hoge" # またはimg = "hoge"として片方をgarbageに
> 	GC::start       # => エラー
> このような場合のimageData先のメモリは、どのような方法で開放するのがよい
> のでしょうか?

直接IplImageへのポインタを使うのではなく、元になったVALUEも一緒
に持っておけばいいんじゃないでしょうか。で、GCのときにはそれを
markしてやると。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦