我有这个使用opencv的代码。我简化它以确保错误与应用程序的任何其他部分无关。代码是:
int main(int argc, char * argv)
{
int num_images = 2;
std::vector<cv::Mat> images(num_images);
std::vector<cv::Mat> masks(num_images);
vector<Point> corners(num_images);
vector<Size> sizes(num_images);
sizes[0] = Size(100, 100);
sizes[1] = Size(100, 100);
corners[0] = Point(0, 0);
corners[1] = Point(0, 0);
images[0].create(sizes[0], CV_8SC3);
images[0] = cv::Scalar(255, 0, 0);
images[1].create(sizes[1], CV_8SC3);
images[1] = cv::Scalar(0,255, 0);
masks[0].create(sizes[0], CV_8SC1);
masks[1].create(sizes[1], CV_8SC1);
masks[0] = 255;
masks[0](Rect(0, 0, 50, 100)) = 0;
masks[1] = 0;
masks[1](Rect(0, 0, 50, 100)) = 255;
Ptr<SeamFinder> seam_finder = new detail::VoronoiSeamFinder();
seam_finder->find(images, corners, masks);
}
如果我注释掉seam_finder-&gt;查找行,它正常工作,但是当它被添加到代码中时,我在应用程序退出时出错。
在VCTools \ crt \ crtw32 \ misc \ dbgheap.c第1424行生成的错误,表达式为:_pFirstBlock == pHead。
为什么这行损坏了堆以及如何修复它。