我是在arm上运行的,我的测试代码如下:
#include<stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/contrib/contrib.hpp>
#include <string>
using namespace cv;
using namespace std;
int main(int argc ,char* argv[])
{
vector<Mat> matVec;
//Mat tmpMat;
IplImage* src;
for(int i=0;i<100;++i)
{
Mat tmpMat;
tmpMat.create(cvSize(256,256),CV_8UC1);
for(int j=0;j<256;++j)
for(int k=0;k<256;++k)
{
tmpMat.at<uchar>(j,k)=(i+j)%255;
}
matVec.push_back(tmpMat.clone());
}
int index=100;
system("free");
printf("Press any key to stop!");
getchar();
while(index>1)
{
matVec.at(index-1).release();
--index;
}
matVec.clear();
vector<Mat>(matVec).swap(matVec);
system("free");
printf("Press any key to stop!");
getchar();
return 0;
}
释放前后,内存并没有太大变化。我感到很困惑,这是什么原因呢?