Throws exception while deserializing large no object

I'm using vs 2010 and getting memory leaks when deserializing objects with binary archive . #include <boost/archive/binary_oarchive.hpp> #include <boost/archive/binary_iarchive.hpp> class ElementResultData { private: friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar,const unsigned int version) { ar & m_pass; ar & m_fail; ar & m_units; ar & m_result_no; ar & m_outof_tolerance; ar & m_iPartNo; ar & m_iActualValue; ar & m_iMeasurement1; ar & m_iMeasurement2; ar & m_iMeasurement3; } public: std::string m_pass; std::string m_fail; std::string m_units; std::string m_result_no; std::string m_outof_tolerance; unsigned long m_iPartNo; double m_iActualValue; double m_iMeasurement1; double m_iMeasurement2; double m_iMeasurement3; public: ElementResultData(){}; ElementResultData(std::string ps,std::string fl,std::string unit,std::string rno,std::string tol, int n,double av,double m1,double m2, double m3) : m_pass(ps),m_fail(fl),m_units(unit),m_result_no(rno),m_outof_tolerance(tol),m_iPartNo(n), m_iActualValue(av),m_iMeasurement1(m1),m_iMeasurement2(m2),m_iMeasurement3(m3) {} }; //DataResultDlg.h class CDataResultDlg { // Construction public: std::map<int, ElementResultData> m_mElemResDatafirst; std::map<int, ElementResultData> m_mElemResDataSecond; std::map<int, ElementResultData> m_mElemResultData; }; //DataResultDlg.cpp #define NUM_ELEMENTS 50000 // works fine when NUM_ELEMENTS is 1 class CDataResultDlg { for(unsigned long i=0;i<NUM_ELEMENTS;i=i+2) { m_mElemResDatafirst.insert(std::make_pair(i, ElementResultData("Pass","No", "MM","PartA","O",i,1.6020,1.0400,1.320,1.1010))); m_mElemResDatafirst.insert(std::make_pair(i+1,ElementResultData("Fail","Yes","MM","PartB","O",i+1,1.085,1.0004,2.320,1.1010))); } //Saving Data std::ofstream ofs("ResultData"); // save data to archive { boost::archive::binary_oarchive oafirst(ofs,std::ios::app); //write instance to archive int no_of_map = 2; oafirst<< no_of_map; oafirst << m_mElemResDatafirst; oafirst << m_mElemResDataSecond; } //Loading Data std::ifstream ifs("ResultData",std::ios::binary); { // create and open an archive for input boost::archive::binary_iarchive ia(ifs); // read class state from archive int no_of_Element; ia>>no_of_Element; for(int i =0;i<no_of_Element;i++) ia >>m_mElemResultData; *// Out Of Memory * }; Same code works fine for text_archive.I have to serialize huge amount of data to a file . Any help will be appreciated . -- View this message in context: http://boost.2283326.n4.nabble.com/Throws-exception-while-deserializing-larg... Sent from the Boost - Dev mailing list archive at Nabble.com.

[Bikas Tanti]
I'm using vs 2010 and getting memory leaks when deserializing objects with binary archive . [...] std::string m_pass; [...]
If you're using VC10 RTM, you should upgrade to SP1 immediately - it fixes a std::string memory leak. Stephan T. Lavavej Visual C++ Libraries Developer

Thanks ... Stephan T. Lavavej for quick reply . But same code work fine when using *text_archive* instead of * binary_archive *. -- View this message in context: http://boost.2283326.n4.nabble.com/Throws-exception-while-deserializing-larg... Sent from the Boost - Dev mailing list archive at Nabble.com.

Thanks Stephan T. Lavavej But same code work fine with *text_archive* instead of *binary_archive *. -- View this message in context: http://boost.2283326.n4.nabble.com/Throws-exception-while-deserializing-larg... Sent from the Boost - Dev mailing list archive at Nabble.com.
participants (2)
-
Bikas Tanti
-
Stephan T. Lavavej