這個程序(從較大的程序中縮小)在Windows 7下以vs2008 Release(Win32)模式編譯後總是崩潰。我不熟悉彙編代碼,也不知道它是編譯器還是boost的缺陷: :ends_with或boost :: asio :: buffers_iterator。它可以在Ubuntu中使用g ++進行編譯和執行,沒有任何問題。人們說它不太可能是編譯器的bug,但是當在調試模式下編譯(或禁用優化)時,問題確實消失。編譯器或boost庫的問題?
我被這個問題困住了好幾個小時。任何幫助表示讚賞。提前致謝。
#include <iostream>
#include <string>
#include <boost/asio.hpp>
#include <boost/algorithm/string.hpp>
typedef boost::asio::buffers_iterator<boost::asio::const_buffers_1> iterator_t;
typedef boost::iterator_range<iterator_t> range_t;
static const std::string LINE_END_MARK = "\r\n";
int main(int argc, char* argv[])
{
boost::asio::streambuf _buf;
std::ostream os(&_buf);
os<<"END\r\n";
iterator_t cursor = boost::asio::buffers_begin(_buf.data());
iterator_t end = boost::asio::buffers_end(_buf.data());
std::ostream_iterator<char> it(std::cout," ");
std::copy(LINE_END_MARK.begin(), LINE_END_MARK.end(), it);
range_t r(cursor, end);
if(!boost::ends_with(r, LINE_END_MARK))
return 0;
return 1;
}
我不知道回答你的問題,但我可以用瑞普VS2008你的崩潰,但不與VS2010。 –
你編譯Boost ASIO嗎?我認爲這是少數需要編譯的東西之一 – pyCthon
asio是一個僅包含頭文件的庫,但它依賴於boost :: system,它需要單獨的編譯。 – user869210