C++ BOOST async_send_to导致内存泄漏(1.71)

C++ BOOST async_send_to导致内存泄漏(1.71),c++,boost,asio,C++,Boost,Asio,调用sendSync没有问题,调用sendSync会导致堆上升。 有没有人知道原因是什么以及如何解决 void sendAsync(const std::string& message) { socket.async_send_to( boost::asio::buffer(message), remote_endpoint, [this](boost::system::error_code /*ec*/, std::size_t /*byt

调用sendSync没有问题,调用sendSync会导致堆上升。 有没有人知道原因是什么以及如何解决

void sendAsync(const std::string& message)
{   
    socket.async_send_to(
        boost::asio::buffer(message), remote_endpoint,
        [this](boost::system::error_code /*ec*/, std::size_t /*bytes_sent*/)
        {
        });
}

void sendSync(const std::string& message) 
{
    boost::system::error_code ignored_error;
    socket.send_to(boost::asio::buffer(message), remote_endpoint, 0,   ignored_error);
}


for(;;)
{
    TeleItems.SentCounter++;
    printf("Sent Telegramm : %u \n",TeleItems.SentCounter);
    sender.sendAsync( "Hi this is a telegramm" );
    std::this_thread::sleep_for(std::chrono::milliseconds(1));
}

这可能与内存泄漏无关,但在
sendAsync
中,当稍后从非所有者缓冲区读取本地参数
message
时,将有一个对该参数的悬空引用。您需要确保
消息
在调用处理程序之前保持活动状态。否则,您会有未定义的行为,并且明显的内存泄漏可能只是tanks的一种表现,我也尝试了它,但没有使用socket.async\u send\u to(boost::asio::buffer(“HI”)等参数,…这也不起作用。您不能在套接字的一个实例上同时启动多个异步写入操作。在启动新的写入操作之前,您必须等待,直到上一个写入操作结束。确定-非常感谢提供的信息。现在已清楚:-)这可能与内存泄漏无关,但是在
sendAsync
中,当稍后从非所有者缓冲区读取本地参数
消息时,您将通过非所有者缓冲区获得对该参数的悬空引用。您需要确保
消息
在调用处理程序之前保持活动状态。否则,您会有未定义的行为,并且明显的内存泄漏可能只是tanks的一种表现,我也尝试了它,但没有使用socket.async\u send\u to(boost::asio::buffer(“HI”)等参数,…这也不起作用。您不能在套接字的一个实例上同时启动多个异步写入操作。在启动新的写入操作之前,您必须等待,直到上一个写入操作完成。确定-非常感谢提供的信息。现在已清楚:-)