1.vector <T> 型释放内存 通过交换的方法。 1template <classT>voidClearVector(vector<T>&v);23template <classT>45voidClearVector(vector<T>&v)67{8vector<T>vtTemp;//临时变量910vtTemp.swap(v);1112v.shrink_to_fit();1314v.~vector<T>();15} 2.vector <T*> 型释放内存 先删除容器内的指针...
strVec是容器名称,iter是迭代器,删除元素后,迭代器指向下一个元素; vector(Vec).swap(Vec); 将Vec的内存空洞清除; vector().swap(Vec); 清空Vec的内存; 示例代码: #include"iostream" #include"vector" #include"string" usingnamespacestd;intmain(){ vector<string> strVec; strVec.push_back("Sophia"); ...
如果vector中存放的是指针,那么当vector销毁时,这些指针指向的对象不会被销毁,那么内存就不会被释放。如下面这种情况,vector中的元素时由new操作动态申请出来的对象指针: for(vector<void*>::iterator it=v.begin();it!=v.end();it++)if(NULL!=*it){delete*it;*it=NULL;}v.clear(); 1. 2. 3. 4. ...
vector< T > vtTemp; veTemp.swap( vt ); } 就是通过作用域还有swqp的搭配进行空间的释放,然后就OK了 下面提一个小问题: 如果vector中存放的是指针,那么当vector销毁时,这些指针指向的对象不会被销毁,那么内存就不会被释放。如下面这种情况,vector中的元素时由new操作动态申请出来的对象指针: for (vector::...
{ cout << tem->strName <<" "<< tem->nAge << endl; }deleteperson;//这才真正释放内存vector<Person>().swap(record.vcPersonList);//这中方法是可以是否内存空间的//至此所有的new出来的内存空间全部释放了intwait; cin >> wait; }
cout << (*tem)->strName <<" "<< (*tem)->nAge << endl;delete*tem; } *tem = NULL; }//vector<Person>().swap(record.vcPersonList);//这中方法是可以是否内存空间的//至此所有的new出来的内存空间全部释放了}voidmain() { MyMethod();intwait; cin >> wait; }...
C++ vector容器释放内存应注意的地方(一) //#include <iostream>//#include <vector>//#include <stdio.h>//#include <boost/date_time.hpp>//using namespace std;//using namespace boost::gregorian;///返回dtLastDatetime相对于dtCurDatetime日期的第几周//int GetOrderWeek(const date &dtLastDatetime,...