opencvのMatを使っていたところデストラクタ内で例外が発生してしまいました。
ヒープが壊れていると言われてしまいます。
直前までの処理を書くと
struct MatPair
{
cv::Mat a,b;
};
struct MyStruct
{
MatPair c,d;
};
TArray<MyStruct> array;//TArray=ue4で提供される可変長配列、std::vector的な
void Add(const MatPair &x, const MatPair &y)
{
array.Add(MyStruct{x, y});
}
void Func()
{
array.Sort();//本当はラムダ式を使ってランダムにソートする。今回は省略
for(auto &i : array)
{
//色々処理
//opencv関係の関数は画像と画像を水平方向に連結するcv::hconcatを使用
}
array.Empty();//arrayの中身を消去、この中でcv::Matのデストラクタが呼ばれて例外が出てるっぽい?
}
int main()
{
//適当にAdd関数をよんだ後にFunc関数を呼ぶ
}
ヒープが壊れる という例外が出るのは、確保した領域外にアクセスした場合という認識です。
しかし、cv::Matの領域外にアクセスするような処理はしていないつもりです。
[hr]
cv::Matのデストラクタで ヒープが破壊された という例外が出ます。
opencvに関係ありそうな関数はcv::hconcatを使っています。
例外の原因がわかる方が降りました教えてもらえないでしょうか?<(_ _)>
オフトピック
あわせてこちらも確認してもらえるとうれしいです^p^
http://dixq.net/forum/viewtopic.php?f=3&t=19329
http://dixq.net/forum/viewtopic.php?f=3&t=19329