gpt4 book ai didi

c++ - boost multi_index_container 持久化存储在一个文件中

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:32 26 4
gpt4 key购买 nike

我可以依赖在内存映射文件中分配的 boost multi_index_container 吗?这种“数据库”可以在具有相同字节顺序的计算机之间移植吗?

最佳答案

不,这不安全。内存映射文件中第一个字节的地址不能保证在调用之间是相同的。

Boost 的内存映射文件需要一个提示,但它只是一个提示。

所以在第一次调用中,内存可能位于 0xBAADF00D。在第二次调用时,它可能位于 0xF00DBAAD。结构中的指针将不再有效,因为它们将指向 0xBAADF00D 附近的内存,而不是 0xF00DBAAD 附近的内存。

作为一个严重的问题,它可能通常在测试中起作用,因为通常可能会遵守提示——但有时该内存地址已经有东西了,并且 hint 将不得不被忽略。

(还有其他部分使它变得非常困难——但上面的部分让它变得非常不可行)。

现在,像这样的策略可以奏效,但需要对相关数据结构进行非常侵入式的自省(introspection)。为了使数据结构具有正确的偏移量,您必须执行像 DLL 重新寻址这样的传递,到那时您还不如直接将其序列化。

关于c++ - boost multi_index_container 持久化存储在一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163235/

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