takminの書きっぱなし備忘録 @はてなブログ

主にコンピュータビジョンなど技術について、たまに自分自身のことや思いついたことなど

OpenCVのCvStatModelのdeleteに失敗

表題の通り。例えば以下のようなコードを書いたとする。

                                                              • -

例1:
CvStatModel *hoge = new CvStatModel();
delete hoge;

例2:
CvStatModel *hoge = new CvStatModel[10];
delete[] hoge;

                                                                • -

と非常に簡単なコードで間違いようがないわけですが、なぜかdeleteのタイミングで

「ヒープが壊れていることが原因として考えられます。XXXX.exe または読み込まれた DLL にバグがあります。」

とエラーが吐き出されます。

ちなみに、環境は

PC: Lenovo ThinkPad X61
OS: Windows XP
IDE: MS Visual Studio 2005
OpenCV: 1.0

です。

CvStatModelは機械学習クラスのほとんどが継承しているクラスなので、CvSVMもCvDTreeも同様のエラーとなります。

試しに、OpenCV1.0を再コンパイルしてみたけどやっぱり失敗。

そこで、OpenCVのMachine Learning関係のソースコードを全て同じプロジェクトに追加してコンパイルしなおしたところ、うまくいきました。

ちょっとOpenCV 1.1preでどうなるか試してみます。