Я использую boost :: asio :: buffer для отправки сообщения, используя
void Send(const std::string& messageData)
{
socket.async_write(boost::asio::buffer(messageData), ...);
}
И обнаружил ошибку времени выполнения «строковый итератор не может быть разыменован» где-то в потоке io_service. Когда я создаю переменную объекта для хранения данных сообщения для буфера:
void Send(const std::string& messageData)
{
this->tempStorage = messageData;
socket.async_write(boost::asio::buffer(this->tempStorage), ...);
}
ошибка никогда не возникает. std :: строка (на которую ссылается messageData) освобождается почти сразу после вызова Send () - сохраняет ли boost :: asio :: buffer только ссылку на объект? Если да, то как я могу заставить ее сохранить данные по значению?