我正在尝试使用boost :: iostreams(1.53.0)解压缩HTTP请求正文并稍后处理它。 但是当我运行以下代码时,我遇到了崩溃。
try {
using namespace boost::iostreams;
ifstream file(argv[1], std::ios_base::in | std::ios_base::binary);
boost::iostreams::filtering_istream in;
in.push(gzip_decompressor());
in.push(file);
std::stringstream strstream;
boost::iostreams::copy(in, strstream);
} catch (std::exception& e) {
cout << e.what() << endl;
}
崩溃发生在gzip_decompressor()
,更具体地说是来自boost的gzip.hpp的gzip_header() { reset(); }
(通过查看调用堆栈)。
我已经编译了自己的boost :: iostreams库,并尝试使用来自macports的boost,但同样的崩溃也会发生。我也尝试使用gzstream library,但是在构造函数中崩溃,更具体地说是在igzstream
的构造函数中崩溃。
我倾向于认为这是与zlib相关的问题。 我没有说明,我正在使用带有Mountain Lion和xCode 4.6的MacBook Pro来构建和运行代码。
你们之前有没有遇到过这样的问题?
答案 0 :(得分:1)
我发现了问题:Apple的LLVM编译器。 我确信我正在使用GCC,但似乎我没有。
我发现这是通过绊倒另一个奇怪的崩溃,这只是通过实例化std::string
对象而发生的。这让我检查项目设置,在那里我发现我使用的是LLVM编译器,这可能对我链接gcc构建的库感到不满。
感谢您的回复。