Принудительное копирование boost :: asio :: buffer по значению

Я использую 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 только ссылку на объект? Если да, то как я могу заставить ее сохранить данные по значению?

9
задан Chnossos 9 April 2016 в 14:06
поделиться