使用 std::vector 和内存释放

Posted

技术标签:

【中文标题】使用 std::vector 和内存释放【英文标题】:use std::vector and memory release 【发布时间】:2014-04-30 05:51:31 【问题描述】:

我正在使用std::vector<CvPoint> 来存储视频剪辑的边缘。

std::vector<CvPoint> vPt= floodfill(cvPoint(x,y), 255,  0, iplEdgeCpy, 100);

边缘处理完毕后,我调用swap方法释放内存。

vector<CvPoint>().swap(myVector);

但是,内存仍然没有释放。它表明我的进程使用的内存量增加了。

谁能帮助我或给我一些建议?

【问题讨论】:

您的代码甚至不应该编译。 floodFill 没有返回向量。而且它的所有输入参数也不合适。 【参考方案1】:

取决于您的操作系统。在大多数操作系统下,进程不会“释放”已释放的内存,它会挂在空闲列表中,因此如果进程想要分配更多内存,它已经拥有它并且不必去操作系统.

您如何测量内存大小?如果您担心泄漏,那么像 valgrind 这样的工具比只查看进程的内存量更有用。

【讨论】:

感谢您的回复。我将尝试使用 valgrind 来测试我的进程中的内存泄漏。

以上是关于使用 std::vector 和内存释放的主要内容,如果未能解决你的问题,请参考以下文章

C++ STL std::vector内存释放

如果没有堆内存,如何释放 std::vector

std::vector<cocos2d::Sprite* > m_iDange ;怎么释放内存!

使用 shrink_to_fit() 释放向量向量中的内存

释放分配给二维向量的内存

堆上的整数向量和释放内存