Boost.进程间内存位置
Boost.Interprocess memory location
在 Boost.Interprocess文档中 这是在哪里分配的? 声明 Boost.Interprocess 容器同时使用两种机制放置在共享内存中:
- Boost.Interprocessconstruct<>,find_or_construct<>...功能。 这些函数将C++对象放置在共享中 记忆。但这只放置了对象,而不是这个 对象可以动态分配。
- 共享内存分配器。这些允许分配共享内存部分,以便容器可以动态分配片段 用于存储新插入元素的内存。
使用boost.vector的用例是什么,其中内部存储器存在于当前进程中,但使用共享内存分配器以便将元素放置在共享内存中?
如果我想将此结构共享到另一个进程:
struct Shared
{
vector<string> m_names;
vector<char> m_data;
};
我想我希望向量可以被其他进程访问,以便它可以迭代它们,对吧?
find_or_construct
和朋友是你自己的直接分配。
分配器将传递给库类型,以类似的方式进行内部分配。否则,只有"控制结构"(例如,典型std::string
为 16 字节(将位于共享内存中,而不是标准库容器内部分配的所有相关数据。
好吧,您无法从其他进程访问向量,但您可以访问元素(因此在您的示例中为字符串(,例如通过指针
相关文章:
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 内存所有位置 wxWidgets
- 为什么字符串的 move() 会改变内存中底层数据的位置?
- 如何在不等待检索的情况下获取C++中的内存位置?
- 内存中类位置的成员是否取决于类成员在类定义中的位置?
- 向量的内存位置不连续
- 如何根据C++在同一内存位置重新初始化 C# 中的对象(还是自动完成)?
- 常量引用的内存位置
- C++强制变量到一个固定的内存位置
- 为什么未初始化的内存位置的值给出 -842150451 的值?
- 为什么存储在内存位置的值会发生变化?
- 在特定内存位置构造 c++ 对象
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如何识别内存泄漏的位置
- 内存位置出现Microsoft C++异常:std::out_of_range
- 函数,返回变量c++占用的内存位置的大小
- 在尝试使用CUDA分配内存时,我遇到了访问冲突写入位置错误
- delete如何知道对象在内存中的起始位置
- 无法在 Opencv 中显示图像导致内存位置
- 如何修复<程序名称>中的"<内存位置>未处理的异常。Visual Studio 2017 中的访问冲突写入位置<内存位置>"