asio aync_send内存泄漏

时间:2018-02-25 19:35:42

标签: c++ boost memory-leaks asio

我有下一个片段:

void TcpConnection::Send(const std::vector<uint8_t>& buffer) {
std::shared_ptr<std::vector<uint8_t>> bufferCopy = std::make_shared<std::vector<uint8_t>>(buffer);

auto socket = m_socket;

m_socket->async_send(asio::buffer(bufferCopy->data(), bufferCopy->size()), [socket, bufferCopy](const boost::system::error_code& err, size_t bytesSent)
{
    if (err)
    {
        logwarning << "clientcomms_t::sendNext encountered error: " << err.message();

        // Assume that the communications path is no longer
        // valid.
        socket->close();
        }
    });
}

此代码导致内存泄漏。如果m_socket-&gt; async_send调用被注释,那么就没有memeory泄漏。我无法理解为什么在调度回调后不释放bufferCopy。我做错了什么? 使用Windows。

0 个答案:

没有答案