HttpClient泄漏3.17

// Worker thread
void HttpClient::networkThread()
{
increaseThreadCount();

while (true)
{
    HttpRequest *request;

    // step 1: send http request if the requestQueue isn't empty
    {
        std::lock_guard<std::mutex> lock(_requestQueueMutex);
        while (_requestQueue.empty())
        {
            _sleepCondition.wait(_requestQueueMutex);
        }
        request = _requestQueue.at(0);
        _requestQueue.erase(0);
    }

    if (request == _requestSentinel) {
        break;
    }

    // step 2: libcurl sync access
    
    // Create a HttpResponse object, the default setting is http access failed
    HttpResponse *response = new (std::nothrow) HttpResponse(request);

    processResponse(response, _responseMessage);


    // add response packet into queue
    _responseQueueMutex.lock();
    _responseQueue.pushBack(response);
    _responseQueueMutex.unlock();

    _schedulerMutex.lock();
    if (nullptr != _scheduler)
    {
        _scheduler->performFunctionInCocosThread(CC_CALLBACK_0(HttpClient::dispatchResponseCallbacks, this));
    }
   else//这里未做释放,出现这种情况的可能是发起http请求回调还没回来HttpClient已经被调用destroyInstance了**_**
   {
       response->release();
       response->getHttpRequest()->release();
   }
    _schedulerMutex.unlock();
}

// cleanup: if worker thread received quit signal, clean up un-completed request queue
_requestQueueMutex.lock();
_requestQueue.clear();
_requestQueueMutex.unlock();

_responseQueueMutex.lock();
_responseQueue.clear();
_responseQueueMutex.unlock();

decreaseThreadCountAndMayDeleteThis();

}