c – 指针矢量. BOOST序列化

weixin_38073436 2019-09-12 02:10:31
我想使用BOOST序列化/反序列化以下向量中对象的值(而不是指针): std :: vector <A*> m_vector; 要序列化我使用以下代码: int nItems = m_vector.size(); ar & nItems; std::for_each(m_vector.begin(), m_vector.end(), [&ar](A* pItem) { ar & *pItem; }); 并反序列化: int nItems; ar & nItems; for (int i = 0; i < nItems; ++i) { A* pItem; ar & *pItem; ///////////// Run-Time Check Failure #3 m_vector.push_back(pItem); } 但是当我运行程序时,我收到以下错误: Run-Time Check Failure # 3 - The variable 'pItem' is Being Used without Being initialized. 我究竟做错了什么? 谢谢.
...全文
7 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38076559 2019-09-12
  • 打赏
  • 举报
回复
您需要为pItem指向的对象分配内存: A* pItem = new A; ar & *pItem; m_vector.push_back(pItem); 错误是因为虽然你有一个指针,但指针指向的内存位置没有对象 – 指针的值是垃圾(未初始化的指针). 当不再需要向量中指针指向的对象时,不要忘记调用delete以防止内存泄漏.更好的是,使用智能指针(例如boost :: shared_ptr<>)来确保在不再可访问时释放内存.

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧