使用boost :: iostreams时崩溃

时间:2013-04-01 20:03:32

标签: c++ boost gzip boost-iostreams compression

我正在尝试使用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来构建和运行代码。

你们之前有没有遇到过这样的问题?

1 个答案:

答案 0 :(得分:1)

我发现了问题:Apple的LLVM编译器。 我确信我正在使用GCC,但似乎我没有。

我发现这是通过绊倒另一个奇怪的崩溃,这只是通过实例化std::string对象而发生的。这让我检查项目设置,在那里我发现我使用的是LLVM编译器,这可能对我链接gcc构建的库感到不满。

感谢您的回复。