我正在处理 OpenCV 中的 3D 稀疏矩阵,当我尝试调用 cv::SparseMat 的发布方法时出现此访问冲突错误(http://docs.opencv.org/modules/core/doc/basic_structures.html#稀疏释放)。
还有一些关于 OpenCV 内存管理的注释:http: //docs.opencv.org/modules/core/doc/intro.html#automatic-memory-management
这是我的问题的孤立版本:
int main(int argc, char *argv[])
{
cv::SparseMat smat2;
smat2 = Test();
smat2.release(); //access violation error
}
cv::SparseMat Test()
{
const int sizes[] = {480, 640, 3000};
cv::SparseMat mat(3, sizes, CV_8SC1);
return mat;
}
而发生错误的内部代码是:
inline void SparseMat::release()
{
if( hdr && CV_XADD(&hdr->refcount, -1) == 1 )
delete hdr; // <--- HERE!
hdr = 0;
}
内存管理和 C++ 对我来说已经有一段时间了。任何帮助深表感谢。谢谢。