簡體   English   中英

增強向量的序列化,在發行版本中崩潰

[英]Boost serialization of vectors, crash in release build

我正在嘗試基本的Boost序列化示例。 在嘗試傳遞矢量時,我遇到了以下代碼問題:

#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
#include <queue>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/vector.hpp>

using namespace std;
stringstream ss (stringstream::in | stringstream::out);

void save()
{
  boost::archive::text_oarchive oa(ss);

  vector<int> v;
  v.push_back( 228 );
  v.push_back( 322 );

  oa << BOOST_SERIALIZATION_NVP(v);
}

void load()
{
  boost::archive::text_iarchive ia(ss);
  vector<int> tV;
  ia >> BOOST_SERIALIZATION_NVP(tV) ;
  std::cout << "Hello" << std::endl ;
}

int main()
{    
    save();
    load();

   return 0;
}

在釋放模式下:程序崩潰,不打印Hello消息。

在調試模式下:程序打印Hello消息並正常關閉。 我在調試模式下看到了向量tV的值,它顯示了正確填充的值。

我可能做錯了什么?

PS:我確實在SO上檢查了類似的問題,但實際上與我的問題無關。


根據評論編輯:

void save()
{
  boost::archive::text_oarchive oa(ss);

  vector<int> v;
  v.push_back( 228 );
  v.push_back( 322 );

  oa << v;
}

void load()
{
  boost::archive::text_iarchive ia(ss);
  vector<int> ;
  ia >> v ;
  std::cout << "Hello" << std::endl ;
}

我的猜測是您在發行模式下違反了ODR。

確保使用與構建serialization庫完全相同的宏來構建程序。 特別要注意_SECURE_SCL宏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM