使用运算符时双重内存释放或损坏

时间:2015-01-07 17:34:07

标签: c++ memory-leaks operator-overloading

我有以下问题:

~Set()
{
    delete _arraySet;
};

void addToSet(T val)
{
    if(_currLen < _maxLen)
    {
        _arraySet[_currLen] = val;
        _currLen++;
    }
}

Set<T> operator+(Set& other)
{
    Set result;

    for(int i=0; i< _currLen; i++)
    {
        result.addToSet(_arraySet[i]);
    }
    for(int i=0; i< other._currLen; i++)
    {
        result.addToSet(other._arraySet[i]);
    }

    return result;
}

致电后

Set<int> temp  = x + x;

在main中,我得到_BLOCK_TYPE_IS_VALID断言错误。说实话,我不知道为什么会发生这种情况,但是在运行调试之后,似乎我会立即从operator +中删除结果,而不是对它执行=操作。很抱歉无法提供更多细节......

@Edit:

看起来我一直在错过三级规则。 Here's the link to the article for anyone with similar problem。非常感谢您的帮助!

0 个答案:

没有答案