VC調試boost::asio::async_send_to時候的一個問題(_Debug_message assert的異常)


最近遇到一個奇怪的問題,在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的底層實現。

姑且把這個問題及其方法放在這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章