我有**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]
**人员是本班的成员, (员工**人员,员工是其他派生类的基类, 各种员工,我使用的是多态性), 这个功能只是为了增加一个员工, 功能很长,这就是为什么我只把它的一部分, 我希望你能理解我, 如果我不删除似乎一切正常,否则我得到断言错误,
答案 0 :(得分:1)
我不确定我理解这个问题。但是,根据我的理解,如果你有:
struct Foo { ... };
Foo* foo = new Foo;
Foo** bar = &foo;
然后,您只需要delete foo
或delete *bar
(仅限 )。
但是你通常不想跟踪那样的东西,而应该考虑使用std::shared_ptr
或std::unique_ptr
之类的智能指针。