使用redis c库,异步内存泄露的问题

使用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;
}