最近遇到一個奇怪的問題,在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的底層實現。
姑且把這個問題及其方法放在這裏