Я работал над программой для асинхронного ускоренного сервера, и до сих пор у меня есть ее для подключения. Однако теперь я получаю сообщение об ошибке «Итератор вектора не разыменован».
Я подозреваю, что вектор уничтожается или разыменовывается перед отправкой пакета, вызывая ошибку.
void start()
{
Packet packet;
packet.setOpcode(SMSG_PING);
send(packet);
}
void send(Packet packet)
{
cout << "DEBUG> Transferring packet with opcode " << packet.GetOpcode() << endl;
async_write(m_socket, buffer(packet.write()), boost::bind(&Session::writeHandler, shared_from_this(), placeholders::error, placeholders::bytes_transferred));
}
void writeHandler(const boost::system::error_code& errorCode, size_t bytesTransferred)
{
cout << "DEBUG> Transfered " << bytesTransferred << " bytes to " << m_socket.remote_endpoint().address().to_string() << endl;
}
Запуск вызывается после установления соединения.
packet.write () возвращает вектор uint8_t
Будет ли иметь значение, если я поменяю
void send(Packet packet)
до
void send(Packet& packet)
Не в связи с этой проблемой, но с точки зрения производительности.