是否有发送异步局部变量的特性? 到达功能结束后它不会被释放吗? 例如:
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));
感谢。
答案 0 :(得分:1)
你是对的。
由于发送是异步的,定义局部变量的函数可能在实际发送数据之前返回,这意味着指向它的指针不再有效。这会导致未定义的行为。
您需要分配堆的数据并在回调中释放它,或者使用一些自动释放其内容的结构。