【发布时间】:2017-03-11 16:59:54
【问题描述】:
我正在尝试从一些杂乱的代码中消除所有内存泄漏。我有一个类 Employee 和成员 name_ 在运行时使用 new *char 在堆上分配。现在有些情况下name_在Employee的析构函数被调用之前被手动删除。我知道这是不好的做法。但是,在某些情况下,我仍然需要通过析构函数删除 name_。我试过像
Employee::~Employee(){
if (this->name_)
{
delete[] this->name_;
}
}
或
if (this->name_ != NULL)
{
delete[] this->name_;
}
或
if (this->name_[0] != '\0')
{
delete[] this->name_;
}
但这些选项没有意识到 name_ 已经在其他地方删除并试图删除不再存在的内容。
所以我需要类似的东西
if (char* name_ not deleted yet)
{
delte name_
}
有没有办法检查 if 天气成员是否已被删除?
编辑: 感谢您提供已回答我的问题的链接,确实如此!
【问题讨论】:
-
使用
std::string,让标准库实现为您处理内存管理。 -
@NathanOliver 不幸的是,这是不可能的,因为这是一个分配,并且有些东西我不允许更改,例如
name_的类型是char*。
标签: c++ memory-leaks