米倉といいます。
初投稿です。よろしくお願いします。

画像認識ライブラリOpenCV http://sourceforge.net/projects/opencvlibrary/
をRubyから使える拡張ライブラリを作ろうと考えているのですが、拡張ライブラ
リを作るのは初めてな上に、Cに触れるのも久しいので四苦八苦しています。

* C++は使うの初めてだったり(^^;

このライブラリでは画像を
	typedef struct _IplImage{
		...
		int width;
		int height;      # => 画像の情報など
		...
		char *imageData; # => 画像データへのポインタ
		...
	}IplImage;
のような構造体で扱っており、この構造体をRubyのオブジェクトで包みたいと考
えて
います。

このオブジェクトはイメージから一部の操作用領域を作る機能があるのですが、
その際に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先のメモリは、どのような方法で開放するのがよい
のでしょうか?

* そもそもtargetを操作するとimgにも影響があるのはおかしいですかね?(^^;
---------------------------------
 [ Kanagawa University ]
 Masakazu Yonekura
 mail: kazu / goto.info.kanagawa-u.ac.jp
---------------------------------