读书人

问一个内存释放有关问题~

发布时间: 2012-03-06 20:47:55 作者: rapoo

问一个内存释放问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
struct aa
{
int bb;
vector <char*> cc;
};

class test
{
private:
aa *staa;
public:
~test();
init ()
{
for (int i =0; i <5;i++)
{
char *ss = new char[28]; !@!
memset (ss, 0, 28);
strcpy (ss, "dddd ");
staa-> cc.push_back (ss)
}
}
};

void main
{
test t;
t.init ();
t.~test(); //请问我改怎么写这个析构function来是放!@!处new的内存.单独delete staa; staa = NULL 行吗?
}

[解决办法]
那,你既然vector都用了,为啥不用string取代char *?
[解决办法]
一定要写在析构里吗? 自己再做个接口嘛 里面只写delete[]staa就可以了吧
[解决办法]
你的vector中保存了这个指针,析构的时候遍历vector,移除各个元素的同时进行delete


[解决办法]
还要记得让 staa = NULL; 不然容易犯错
[解决办法]

析构时
用循环吧vector中的指针释放掉
for (int i = 0; i < cc.size(); i++)
{
delete [] cc.at(i);
}

读书人网 >C++

热点推荐