如何释放CVMAT指针向量的记忆

How to release memory of vector of CvMat pointers?

本文关键字:指针 向量 记忆 CVMAT 何释放 释放      更新时间:2023-10-16

我创建了CVMAT指针的向量如下:

vector<CvMat*> items;
for(int i = 0;i<5;i++){
  CvMat* mat = cvCreateMat(5,1,CV_32FC1);
  // assign values to mat
  items.push_back(mat);
}

,然后我尝试按以下方式发布内存:

for(int i = 0;i<5;i++){
  cvReleaseMat(&items[i]);
}
vector<CvMat*>().swap(items);

但是,我看不到任务管理器中的内存使用量。

对我有什么想法?

预先感谢...

内存未返回系统。

在大多数运行时环境中,从操作系统分配给应用程序的应用程序存储器仍保留在应用程序中,很少返回到操作系统。释放内存块可以使您可以从应用程序内重复使用块,但不能将其释放到操作系统以使其可用于其他应用程序。

upd:

因此,无论如何,任务管理器不能成为控制内存分配和交易的可靠工具。如果要保证您的应用程序没有内存泄漏,则可能需要使用Valgrind(如果您在Linux上)或Google或其他一些工具(Google用于"内存泄漏检测")等工具。在这种情况下,您将拥有有关分配,交易,泄漏,内存访问违规等最精确的信息。