在大项目上复制赋值操作符内存泄漏

Blo*_*maN 2 c++ memory-leaks copy variable-assignment operator-keyword

过去几个月我一直在做一个大项目.现在我终于完成了那个项目.但在我的复制赋值操作符中,我有内存泄漏.Valgrind表明它是泄漏的data_的原始值.

这是我的复制赋值操作符代码.

Value& Value::operator=(const Value& r)
{
  data_ = copy(r.data_);
  delete data_; 
  return *this;
}
Run Code Online (Sandbox Code Playgroud)

有谁可以帮我解决这个问题?我真的很感激.

Naw*_*waz 5

我相信你想写这个:

delete data_;     //here it makes sense: delete the current value
data_ = copy(r.data_);  //copy now
Run Code Online (Sandbox Code Playgroud)

不是这个:

data_ = copy(r.data_); //LEAK, as data_ is pointing to current value
delete data_;         //here you're deleting the copied one
Run Code Online (Sandbox Code Playgroud)

确保data_始终指向有效的内存 - 否则有条件地删除它.