使用redis c库,异步内存泄露的问题
bool CPubLongConnect::Disconnect()
{
if (p_redis_context)
{
//如果释放过不能再释放
if (!(p_redis_context->c.flags & REDIS_DISCONNECTING) && !(p_redis_context->c.flags & REDIS_FREEING))
{
redisAsyncDisconnect(p_redis_context);
//delete p_redis_context;
}
}
if (p_event_base)
{
event_base_free(p_event_base);
//delete p_event_base;;
}
//p_event_base = NULL;
return true;
}
释放时调用的代码,如上图所示调用存在内存增长现象,如果不注释掉delete, 则double free,
怎么才能解决这个问题呢?
double free啥意思
泄漏主要是要检查指针申请和指针释放是否配对。
这样?
bool CPubLongConnect::Disconnect()
{
if (p_redis_context)
{
//如果释放过不能再释放
if (!(p_redis_context->c.flags & REDIS_DISCONNECTING) && !(p_redis_context->c.flags & REDIS_FREEING))
{
redisAsyncDisconnect(p_redis_context);
delete p_redis_context;
p_redis_context = NULL;
}
}
if (p_event_base)
{
event_base_free(p_event_base);
delete p_event_base;
p_event_base = NULL;
}
return true;
}