C ++,如何删除成员**对象(使用删除)

时间:2013-05-17 00:00:50

标签: c++ pointers object member delete-operator

我有**object**personnel)作为成员内部(组合)另一个对象,我想释放**personnel指向的内存并将其指向另一个{{1 } {(1 {}}),没有**temp personnel=temp而只是delete该程序运行良好,但如果我正在尝试**personnel它会混淆一切我总是收到错误“personnel=temp

(我有析构函数(和delete **personnel基础析构函数),其中一些什么都不做,但我仍然得到错误)。 (我从各个角度尝试过_Block_Type_Is_Valid (pHead->nBlockUse)virtual等))

(在这几天失去了)

我做错了什么,它是否正确delete personnel[i]它,如果是,我该怎么做?

编辑:

delete []personnel[i]

**人员是本班的成员,  (员工**人员,员工是其他派生类的基类, 各种员工,我使用的是多态性),  这个功能只是为了增加一个员工,  功能很长,这就是为什么我只把它的一部分,  我希望你能理解我, 如果我不删除似乎一切正常,否则我得到断言错误,

1 个答案:

答案 0 :(得分:1)

我不确定我理解这个问题。但是,根据我的理解,如果你有:

struct Foo { ... };
Foo* foo = new Foo;
Foo** bar = &foo;

然后,您只需要delete foodelete *bar(仅限 )。

但是你通常不想跟踪那样的东西,而应该考虑使用std::shared_ptrstd::unique_ptr之类的智能指针。