使用 BOOST ASIO 在异步服务器中发送局部变量

Sending local variable in asynchronous server using BOOST ASIO

本文关键字:局部变量 服务器 异步 BOOST ASIO 使用      更新时间:2023-10-16

这是发送异步局部变量的专有方式吗?到达功能结束后不会释放吗?例如:

NET3_SERVER_DISCONNECT data;
    data.mLength = 9;
    data.mPacketGroup = 3;
    data.mPacketType = 100;
    data.mType = 0xcb;
                    boost::asio::async_write(socket_, boost::asio::buffer((char*)&data, sizeof(data)),
                        boost::bind(&Connection::handle_write, shared_from_this(),
                        boost::asio::placeholders::error,
                        boost::asio::placeholders::bytes_transferred));

谢谢。

你是对的。

由于发送是异步的,因此定义局部变量的函数可能会在实际发送数据之前返回,这意味着指向它的指针不再有效。这会导致未定义的行为

您需要分配堆的数据并在回调中释放它,或者使用一些自动释放其内容的结构。