内存泄漏(类型)与静态std :: vector

Joe*_*Joe 6 c++ memory memory-leaks stl vector

std::vector在课堂上有静态.当我使用微软的内存泄漏检测工具时:

_CrtMemState state;
_CrtMemCheckpoint( & state);
_CrtMemDumpAllObjectsSince( & state );
Run Code Online (Sandbox Code Playgroud)

我将内容插入向量后会报告泄漏.这对我来说很有意义,因为当向量中插入某些内容时会分配新的空间.在程序终止之前,该空间不会被释放(因为向量是静态的).这是正确的吗?

在包含向量的类的析构函数中,我正在删除放入向量的对象.但是,插入时分配的内存仍然存在.反正有没有删除这个空间?

Jam*_*kin 16

你可以用空的向量交换向量 - 这将释放内存.

另见问:收缩矢量


use*_*255 8

添加詹姆斯所写的内容.他的意思是这样做:

std::vector<T>().swap(v);
Run Code Online (Sandbox Code Playgroud)

其中'v'是要释放其内存的向量.