[boost.asio] string iterator not dereferencable using message in async_send_to
I'm using async_send_to to send multicast messages. When I try to send data in a std::string, I always get a 'string iterator not dereferencable' assertion failure. I'm using boost 1.35 and VC9. Here's the code: // instance variable string buffer; // code in method buffer = BuildHailMessage(); socket.async_send_to( boost::asio::buffer(buffer), endpoint, boost::bind( &MulticastServer::HandleSendTo, this, boost::asio::placeholders::error)); I've also tried using char* buffer, dynamically allocating it based on the message length and then use std::copy to copy the std::string into the buffer, but I get heap corruption assertions when trying to delete [] it. The only way I've gotten this to work is using a fixed char[] buffer. Is there a way I can use a std::string with async_send_to? Do I need to use a different type of asio::buffer class? Thanks, John
John Urberg wrote:
I'm using async_send_to to send multicast messages. When I try to send data in a std::string, I always get a 'string iterator not dereferencable' assertion failure. I'm using boost 1.35 and VC9. Here's the code:
// instance variable string buffer;
// code in method buffer = BuildHailMessage(); socket.async_send_to( boost::asio::buffer(buffer), endpoint, boost::bind( &MulticastServer::HandleSendTo, this, boost::asio::placeholders::error));
I've also tried using char* buffer, dynamically allocating it based on the message length and then use std::copy to copy the std::string into the buffer, but I get heap corruption assertions when trying to delete [] it.
The only way I've gotten this to work is using a fixed char[] buffer.
Is there a way I can use a std::string with async_send_to? Do I need to use a different type of asio::buffer class?
I'm getting a similar error. Is there a fix to this issue? Akos
John Urberg wrote:
I'm using async_send_to to send multicast messages. When I try to send data in a std::string, I always get a 'string iterator not dereferencable' assertion failure. I'm using boost 1.35 and VC9. Here's the code:
// instance variable string buffer;
// code in method buffer = BuildHailMessage(); socket.async_send_to( boost::asio::buffer(buffer), endpoint, boost::bind( &MulticastServer::HandleSendTo, this, boost::asio::placeholders::error));
Do you keep the "buffer" string available until async_send_to has actually completed? / Johan
participants (3)
-
Johan Nilsson
-
John Urberg
-
Ákos Maróy