如何正确破坏向量的c ++向量并释放内存

Kee*_*n Z 11 c++ memory-leaks vector

可能重复:
如果没有堆内存,如何释放std :: vector

这里是c ++ noob

假设我声明了一个向量矢量,如:

vector<vector<vector<double> > > phi_x;
Run Code Online (Sandbox Code Playgroud)

在我使用它之后,如何销毁它以释放内存?

我已经阅读了其他一些网站,他们建议使用.clear().根据我的理解,这只删除元素,但不释放矢量容量.我希望矢量完全被遗忘,就像它从未存在过一样.

此外,我目前的矢量应用程序的尺寸为54x54x9,我有大约12个这样的东西.这被认为是愚蠢的大?

mel*_*ene 10

你不需要做任何事情.只是让变量超出范围.


bdo*_*lan 8

如果你打电话.clear(),内部矢量将被彻底销毁.但是,最外面的向量可以保留它用于其向量数组(phi_x.size() * sizeof(vector<vector<double> >)字节)的存储器.要完全清除它并释放所有内存,请使用空向量进行交换:

phi_x.swap(vector<vector<vector<double> > >());
Run Code Online (Sandbox Code Playgroud)

或者干脆phi_x离开范围.