最近遇到一个奇怪的问题,在VS2010中调试BOOST::ASIO的时候会出现如题说明的异常,在网上找了一圈,有个哥们以前遇到过 http://bbs.csdn.net/topics/360059975,但是没给出解决方案。下面也没有给出解决方案,只是说明了使用方法
代码中使用的是如下的语句:
socket_.async_send_to( boost::asio::buffer( strSipHeader, strSipHeader.size() ), targetEndpoint_,
boost::bind( &TestSession::onSend, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred) );
其中strSipHeader是一个函数内自动变量,类型为std::string
尝试使用各种方式,将boost::asio::buffer( strSipHeader, strSipHeader.size() )改为 boost::asio::buffer( strSipHeader )
也是出现异常。
后来无意中将strSipHeader改为char[]类型的局部变量,发现问题就不再出现了。
但是按照官方文档buffer传递过去确实可以是std::string类型。这就有点费解,由于能力有限,也没有去探究boost的底层实现。
姑且把这个问题及其方法放在这里