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)
有谁可以帮我解决这个问题?我真的很感激.
我相信你想写这个:
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_始终指向有效的内存 - 否则有条件地删除它.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |