【发布时间】:2016-03-29 19:30:53
【问题描述】:
我正在尝试编写一个使用 opencv Mat 对象的代码,它是这样的
Mat img;
vector<Mat> images;
for (i = 1; i < 5; i++)
{
img.create(h,w,type) // h,w and type are given correctly
// input an image from somewhere to img correctly.
images.push_back(img);
img.release()
}
for (i = 1; i < 5; i++)
images[i].release();
但是我似乎仍然有内存泄漏,谁能告诉我为什么会这样? 我认为如果 mat 对象的 refcount = 0 那么内存应该被自动释放
【问题讨论】:
-
@Miki 我放入 img 的图像类型和尺寸相同,但图像不同。想象一下在每次迭代中执行类似 imread(FileName) 的操作。
-
啊等等..你的代码看起来坏了,你为什么在循环中调用
img.release()? -
是的,在循环中。因为我也在循环中创建它。
-
如何测量内存泄漏?
-
我基本上为 Mathematica 创建了一个数据包。并且有一个代码可以测量运行代码之前和之后的内存使用情况。评估后差异应为 0。
标签: opencv memory-management memory-leaks destructor mat