1

Apacheモジュールで単純なクラス「A」をシリアライズするとエラーは発生しませんでしたが、メンバー、タイプ「A」を持つ「X」などの複雑なオブジェクトをシリアライズしようとすると、Apacheモジュールでsegfaultが発生しました。(これは、実行可能なコンソール アプリケーションでは発生しません)。

------------------------- ここに私のコードがあります: -------------------- -

class A {
private:
    friend class boost::serialization::access; // to enable boost "access" class to call private "serialize" method of class "A"
    template<class ArchT>
    void serialize(ArchT &ar, unsigned int version) {   // method for both serializing and deserializing
        ar & memA; // (de)serialize member "memA"
    }
    std::string memA; // sample member
public:
    A(){}
    A(std::string pmemA) :
        memA(pmemA) {
    }
    std::string GetMemA()
    {
        return memA;
    }
};
class X {

private:
    friend class boost::serialization::access;
    template<class ArchT>
    void serialize(ArchT &ar, unsigned int version) {
        ar & memX;
        ar & a;
    }
    std::string memX;
    A a;
public:
    X(std::string pmemX, A pa) :
        memX(pmemX), a(pa) {
    }
    X(){}

};
-------------------
                        string st=GetRandomFileName();
            ofstream out(st.c_str());
            boost::archive::text_oarchive out_r(out);
            A a("Amem");
            X x("Xmem", a);
            out_r << x; // not works
                        out_r << a; // works!

------------------- これは apache の gdb からのスタック トレースです ----------------

boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than(boost::serialization::extended_type_info const&) const () from /tmp/libIRSProWebApacheModule.so

2 std::_Rb_tree の 0xb7223c61
4

0 に答える 0