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

C++ 使用BOOST ASIO在异步服务器中发送局部变量,c++,boost,asynchronous,boost-asio,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*)&

它是发送异步局部变量的正确方法吗? 到达函数末尾后,它不会被释放吗? 例如:

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

你说得对

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

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