【发布时间】:2014-03-13 17:04:04
【问题描述】:
我想知道我是否必须在这样的示例中删除这个指针:
class Person
{
public:
Person(char *name) :_name(name) {}
// Is this delete necessary?
~Person() {
cout<<"Godbay Person"<<endl;
delete _name;
}
private:
char * _name;
}
【问题讨论】:
-
无法判断,但很可能不会。
Person甚至无法知道指针是指向动态分配的char还是char数组。 -
"Person 甚至不知道..." name 是 Person 类的字段,所以应该知道它指向动态分配的 char 的指针。
-
@AllanBradley 在您的代码中,
name是传递给构造函数的指针的副本,因此该类不可能知道它是否是动态分配的。 (当然,在现代 C++ 中,我无法想象动态分配char或char数组的情况。) -
你无法从指针中知道它是否必须被删除。
标签: c++ memory destructor allocation delete-operator