gpt4 book ai didi

opencv - 使用OpenCV时出现内存异常(2.4.5)

转载 作者:行者123 更新时间:2023-12-02 17:52:24 36 4
gpt4 key购买 nike

这是我的程序。真的很简单。我试图运行一次迭代10,000次,但是在第838次迭代之后,我总是收到以下消息:

OpenCV error: Insufficient memory < Failed to allocate 2457620 bytes > in unknown function.



为什么会抛出此内存异常?
#include "stdafx.h"
#include "cv.h"
#include "opencv2\core\core.hpp"
#include "opencv2\highgui\highgui.hpp"

int _tmain(int argc, _TCHAR* argv[])
{
for(int i = 0;i<100000;i++)
{
CvMat *mat = cvCreateMat(640*480,5,CV_64FC1);
CvMat *mat_ = cvCreateMat(640*480,1,CV_64FC1);

cvGetCol(mat,mat_,1);
printf("%d th iteration \n",i);

cvReleaseMat(&mat_);
cvReleaseMat(&mat);
}
return 0;
}

最佳答案

您的问题是您有内存泄漏。该行:

CvMat *mat_ = cvCreateMat(640*480,1,CV_64FC1);

为具有指定尺寸的 CvMat分配内存。当您将该指针传递给 cvGetCol()时,该指针将更改为指向 mat中的指定列。但是,以前分配的内存永远不会释放,从而导致内存泄漏。

要解决此问题,请更改以下行:
CvMat *mat_ = cvCreateMat(640*480,1,CV_64FC1);

到以下内容:
CvMat temp;
CvMat* mat_ = &temp;

这应该可以解决您的内存泄漏。但是,如果可能的话,我 强烈建议您改用C++ API(使用 cv::Mat)。不推荐使用C API,并且C++ API更易于使用,并提供自动内存管理。

关于opencv - 使用OpenCV时出现内存异常(2.4.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17327969/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com