#include <vector>
#include <iostream>
#include <string>
using namespace std;
class human
{
protected:
string _name;
public:
human()
{
};
~human()
{
cout << _name << endl;
};
string getName() {return _name;};
void setName(string aName) {_name = aName;};
};
class man : public human
{
};
int main()
{
vector<man*> daddys;
man* daddy1 = new man(); daddy1->setName("daddy1");
daddys.push_back(daddy1);
daddys[0]->setName("daddy3");
//delete daddy1; (×)
return 1;
#include <iostream>
#include <string>
using namespace std;
class human
{
protected:
string _name;
public:
human()
{
};
~human()
{
cout << _name << endl;
};
string getName() {return _name;};
void setName(string aName) {_name = aName;};
};
class man : public human
{
};
int main()
{
vector<man*> daddys;
man* daddy1 = new man(); daddy1->setName("daddy1");
daddys.push_back(daddy1);
daddys[0]->setName("daddy3");
//delete daddy1; (×)
return 1;
}
没有任何输出结果,说明内存泄漏了,其原因是因为 new 之后没有相应的delete。
(×)处取消注释
输出结果为:
daddy3
此时不可显式调用 delete daddys[0] 否则出现段错误,其原因是 daddys中的元素为指针,所以daddys[0] 与daddy1 指向同一块内存,
所以只能释放一次,当然使用delete daddys[0] 代替 delete daddy1 也是可以的。