我创建了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用于"内存泄漏检测")等工具。在这种情况下,您将拥有有关分配,交易,泄漏,内存访问违规等最精确的信息。