私はいくつかの乱雑なコードからすべてのメモリリークを排除しようとしています。私はクラスEmployee
とメンバーname_
を持っており、実行時にヒープ上にnew *char
で割り当てられます。今すぐEmployee
のデストラクタが呼び出される前にname_
が手動で削除される場合があります。これが悪い習慣であることは分かっていますしかし、デストラクタを使って削除するには、まだ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_
はすでにどこか別の場所deltedとしませんでした何かを削除することが試みられていることに気づきませんでしたもう存在しない。
だから私は、メンバーがすでに削除されているif
天気をwithingチェックする方法はあり
if (char* name_ not deleted yet)
{
delte name_
}
ようなものが必要でしょうか?
編集: すでに私の答えた質問へのリンクありがとうございました。
'std :: string'を使って、標準ライブラリの実装があなたのためのメモリ管理を処理できるようにします。 – NathanOliver
@ NathanOliverこれは割り当てのためであり、変更が許可されていないものがいくつかあります。たとえば、 'name_'の型が' char * 'です。 –