new 出来的vector ,需不需要delete?解决思路
new 出来的vector ,需不需要delete?

上面是代码和运行结果,好奇怪new出来的a1在delete之后,main函数退出的时候似乎又执行了一次。哪位大大给我解释一下,谢谢啦。
------解决方案--------------------
你贴出的结果很正常,delete也没有问题。因为你有两个CDemo对象
------解决方案--------------------
a1->push_back(d1);
vector会拷贝一个CDemo
delete的时候会调用这个CDemo的析构
main函数退出的时候d1这个局部变量当然要析构掉
#include <vector>
#include <iostream>
using namespace std;
int i = 0;
int j = 0;
class CDemo{
public:
CDemo():str(NULL){
cout << "constructor:" << i++ << endl;
}
CDemo(const CDemo& cd)
{
cout << "copy constructor:" << i++ << endl;
this->str = new char[strlen(cd.str) + 1];
strcpy(this->str, cd.str);
}
~CDemo(){
cout << "destructor:" << j++ << endl;
if(str)
{
delete [] str;
str = NULL;
}
}
char* str;
};
void main()
{
CDemo d1;
d1.str = new char[32];
strcpy(d1.str, "trend micro");
vector<CDemo> *a1 = new vector<CDemo>();
a1->push_back(d1);
delete a1;
a1 = NULL;
getchar(); // 输入s
return;
}
上面是代码和运行结果,好奇怪new出来的a1在delete之后,main函数退出的时候似乎又执行了一次。哪位大大给我解释一下,谢谢啦。
------解决方案--------------------
你贴出的结果很正常,delete也没有问题。因为你有两个CDemo对象
------解决方案--------------------
a1->push_back(d1);
vector会拷贝一个CDemo
delete的时候会调用这个CDemo的析构
main函数退出的时候d1这个局部变量当然要析构掉