【发布时间】:2020-06-23 20:55:43
【问题描述】:
部分来自我的代码:
class Menuitem
{
private:
char* text;
friend class Menu;
};
class Menu
{
private:
char* title;
Menuitem* items;
int identation = 0;
int amount = 0;
};
如果我这样做delete[] items,它是否也会安全地删除保存在items 中的text?还是需要单独删除?
【问题讨论】:
-
您需要为您之前执行的每个
new执行一个delete。特别是,delete不会自动为您删除任何子分配(您需要自己处理这些,通常在您的类的析构函数中)。更好的是,尽可能完全避免new和delete,并使用例如std::string代替。这样你的生活就会少很多痛苦。 -
如果你真的必须使用
char*,请使用智能指针。 -
@Dr_Cringe 至少您可以为 Menuitem 类编写析构函数。有什么问题?
-
从 C++11 开始,不需要 new/delete。将 std::shared_ptr
-
我很难看到
std::shared_ptr会带来什么std::unique_ptr@Werner
标签: c++ memory-leaks dynamic-memory-allocation