我有一个非常糟糕的内存泄漏,我试图修复,但不知何故,我不能删除对象而不触发此断言.
我已经通过谷歌搜索了一个解决方案并已阅读有关此错误的有关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)