使用BOOST ASIO在异步服务器中发送本地变量

时间:2013-11-16 14:24:38

标签: c++ boost asynchronous boost-asio

是否有发送异步局部变量的特性? 到达功能结束后它不会被释放吗? 例如:

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));

感谢。

1 个答案:

答案 0 :(得分:1)

你是对的。

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

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