小编cwi*_*win的帖子

调试断言失败... _BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)

我有一个非常糟糕的内存泄漏,我试图修复,但不知何故,我不能删除对象而不触发此断言.

我已经通过谷歌搜索了一个解决方案并已阅读有关此错误的有关stackoverflow的问题,但我仍然无法找到答案!

根据我的研究得到此错误的可能原因:
1.删除多个对象
2.阴影复制
3.创建和删除从外部dll加载的
对象4.创建对象而不存储指针

但是:
1.我检查了代码并且无法找到双重删除
2.我使用复制构造函数来复制对象
3.错误的关联类是构建(使用MS Visual Studio)到单独的lib而不是dll.并且与此错误相关的所有类都位于同一个lib中.
我检查了代码,看起来这不是问题

如果有人能够在下面的代码中发现错误,那将是很好的,我感谢每一个指示我解决问题的提示.

编辑:
我忘了在MessageSystem的sendThreadMain中提到相同的删除问题(参见下面的代码).如果我删除消息,它会在代码中的其他地方导致意外错误.可能只是错误的数据传输......但我真的不知道.
此代码在Windows和Linux上运行!

以下是代码的错误相关部分:

信息

class Message 
{
public:
    Message (char type, unsigned char id, unsigned short size) 
    {
        mType = type;
        mId = id;
        mSize= size;
    }

    Message(const Message &o)
    {
        mType = o.mType;
        mId = o.mId;
        mSize = o.mSize;
    }

    char getType() const {return mType;};
    unsigned char getId() const {return mId;};
    unsigned short getSize() const {return mSize;};

protected:
    char mType;
    unsigned char mId; …
Run Code Online (Sandbox Code Playgroud)

c++ assert memory-leaks

16
推荐指数
1
解决办法
3万
查看次数

标签 统计

assert ×1

c++ ×1

memory-leaks ×1