读书人

存储在堆里面的容器如何释放呢

发布时间: 2013-08-25 10:49:56 作者: rapoo

存储在堆里面的容器怎么释放呢?

                                                  内存释放,vector,堆内存                                              
[解决办法]

delete school;

[解决办法]
好吧 先不吐槽你这个手打的时候写出了n多错误
[解决办法]
for(int i=20000000;i<20000;i--)
这里就不会执行for循环里的东西 真不知到你的bad_alloc()从哪里出来的



至于那个释放内存 1楼正解
[解决办法]

引用:
还不如直接粘贴了,哎,不好意思,我改一下,各位大神在看一下
#include<iostream>
#include<vector>
#include<string>

using namespace std;

class Student
{
public:
Student(string _name,int _num):name(_name),num(_num){}
private:
string name;
int num;
};

vector<Student*>* getStudent(int num)
{
vector<Student*> *stu=new vector<Student*>();
for(int i=0;i<num;i++)
stu->push_back(new Student("Micheal",i));
return stu;
}
int main()
{

for(int i=2000000;i>200000;i--)
{
vector<Student*>* school=getStudent(i);

for(vector<Student*>::iterator ite=school->begin();ite!=school->end();ite++)
{
delete *ite;
*ite=0;
}

vector<Student*>().swap(*school);
}

return 0;

}


vector<Student*>().swap(*school);这句干什么用的,没有意义吧?改成 delete school就行。如果这句有意义的话,在后面加一句 delete school就行。
[解决办法]
引用:
Quote: 引用:


delete school;


请问大神,是那一句需要换位delete school 呢?还是在哪儿加一句delete school呢?

引用:
好吧 先不吐槽你这个手打的时候写出了n多错误

请问大神,是那一句需要改为delete school 呢?还是在哪儿加一句delete school 呢?




vector<Student*>* school=getStudent(i);
for(vector<Student*>::iterator it=school->begin();it!=school->end();it++)
{


delete *it
*it=0;
}
vector<Student*>().swap(*school);
delete school;

读书人网 >C++

热点推荐