gpt4 book ai didi

c++ - 提升 :Serialization: Who cleans up the deserialized data?

转载 作者:搜寻专家 更新时间:2023-10-31 01:58:24 24 4
gpt4 key购买 nike

我正在序列化对象的原始指针并将其发送到另一个应用程序。

反序列化时,我得到了另一个原始指针。这意味着 Boost::Serialization 正在内部构造这个指针后面的对象。我现在很好奇谁拥有该对象的所有权,如果不再需要,Boost 是否会删除该对象。

一些代码也许能更好地说明问题是什么:

void anyMethod()
{
std::ifstream file("archiv.txt");
boost::archive::text_iarchive ia(file);
AnyClass* object;
ia >> object;
//work with object
}

//Now what has happened to object?
//Is it deleted, cause it went out of scope?
//Do I have to delete it myself?

最佳答案

我对documentation的理解关于指针序列化,所有权由存档保存:“多次加载同一个指针对象会导致只创建一个对象,从而复制原始指针配置”。这往往表明图书馆负责簿记。

此外,存档提供了一个delete_created_pointers 方法:“删除所有通过加载指针创建的对象。这可用于避免内存泄漏,否则内存泄漏可能会在加载指针和存档时发生加载遇到异常”。

关于c++ - 提升 :Serialization: Who cleans up the deserialized data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com