OpenCV 2.0 – cv::Ptr

A template class for smart reference-counting pointers

OpenCV 2.0では cv::Ptr という参照カウント方式のスマートポインタが用意されています。
これは Boost C++ Library の shared_ptr と同様のもので大変便利です。
参考:参照カウント – Wikipedia

一時的にcv::Ptrクラスのrefcountというメンバをprotectedからpublicに変更して挙動を見てみます。
(cxcore.hppの660行目付近にあります)

すばらしい。
また、IplImage に適用した場合はきちんとテンプレートの特殊化が施されているので安心です。

OpenCV 1.0ではメモリのアロケートに cvAlloc() という malloc() のラッパーが使われていましたが、
OpenCV 2.0ではその代わりに fastMalloc() という関数が用意され、cv::Ptr内でもコールされています。
少し中を覗いてみると、どうやらシステムコールの mmap() でアロケートしているようです。
(Windowsでは普通のmalloc()が呼ばれる模様)
詳しくはまだ読めていませんが、fastというくらいだからきっと速くなっているんでしょう。

メモリ管理を cv::Ptr に任せておくと開発が楽になるのは間違いなさそうです。

関連記事:
OpenCV 2.0を試してみた

あわせて読む:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です