堆损坏在Windows而不是Linux

下面是一些简单的OpenCV代码,用于从video文件创build帧,并在帧上运行SURF特征检测器和提取器。 当我在Linux和OSX上运行这个代码时,它运行正常,但是在Windows上,我在两条注释行上得到了一个堆损坏错误。

VideoCapture capture(vidFilename.c_str()); Mat frame; capture >> frame; SurfFeatureDetector *detector = new SurfFeatureDetector(minHessian); vector<KeyPoint> frameKeypoints; detector->detect(frame, frameKeypoints); delete(detector); // Heap Corruption Detected SurfDescriptorExtractor *extractor = new SurfDescriptorExtractor(); Mat frameDescriptors; extractor->compute(frame, frameKeypoints, frameDescriptors); delete(extractor); // Heap Corruption Detected 

我不知道在代码中可能会导致这种情况。 我正在使用VS 2010编译代码,是否有什么可能导致这种情况发生VS?

如上所述,你没有得到任何与堆腐败有关的异常并不意味着它没有发生。在你的代码中会有问题,而不是在VS或编译器。我以前的文章类似的文章也将在这里有用。

https://stackoverflow.com/a/22074401/2724703

也许你也应该尝试在你的linux上运行一些动态工具(Valgrind)。 很有可能你会用Valgrind找到同样的错误。

这些动态工具会给你造成这些问题的根本原因。