gpt4 book ai didi

c++ - Boost.Interprocess 内存位置

转载 作者:行者123 更新时间:2023-11-28 01:45:29 24 4
gpt4 key购买 nike

在 Boost.Interprocess 文档中 Where is this being allocated?据称 Boost.Interprocess 容器同时使用两种机制放置在共享内存中:

  • Boost.Interprocess construct<>, find_or_construct<>... functions. These functions place a C++ object in the shared memory. But this places only the object, not the memory that this object may allocate dynamically.
  • Shared memory allocators. These allow allocating shared memory portions so that containers can allocate dynamically fragments of memory to store newly inserted elements.

有一个 boost.vector 的用例是什么,其中内部内存位于当前进程中,但使用共享内存分配器以便将元素放置在共享内存中?

如果我想将这个结构共享给另一个进程:

struct Shared
{
vector<string> m_names;
vector<char> m_data;
};

我想我希望其他进程可以访问 vector ,以便它可以对它们进行迭代,对吧?

最佳答案

find_or_construct 和 friend 是自己直接分配。

分配器将被传递给库类型,以类似的方式进行内部分配。否则,只有“控制结构”(例如,典型的 std::string 的 16 个字节)将在共享内存中,而不是标准库容器内部分配的所有相关数据。

关于c++ - Boost.Interprocess 内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45324162/

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