提升::进程间managed_shared_memory指针有效作用域
Boost::interprocess managed_shared_memory pointer effective scope
我只使用 boost::interprocess::managed_shared_memory 在内存中创建共享向量,我已经成功创建了共享内存,我发现当我读取向量时,可以读取和打印注释 1 中向量中的所有元素,但是当离开向量 g/gr 的初始化范围时,即在 main 函数中, 我不能再访问矢量内容了,程序说地址映射错误,但地址是一样的,为什么呢?谁能回答?谢谢!
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/containers/vector.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
typedef boost::interprocess::allocator<boost::interprocess::vector<int>, boost::interprocess::managed_shared_memory::segment_manager> ShmemAllocator;
typedef boost::interprocess::vector<boost::interprocess::vector<int>, ShmemAllocator> Shmem2DVector;
class TestVector{
public:
Shmem2DVector *g;
Shmem2DVector *gr;
TestVector{
boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "shmem");
g = segment.find<Shmem2DVector>("myVector").first;
gr = segment.find<Shmem2DVector>("myVector").first;
//1. print vector g/gr and size of vector g/gr
}
};
int main(){
TestVector test_vec();
//2. print vector g/gr and size of vector g/gr
return 0;
}
一旦离开构造函数,managed_shared_memory对象就会被销毁。尝试将类定义更改为以下内容:
class TestVector
{
public:
Shmem2DVector *g;
Shmem2DVector *gr;
TestVector()
: segment(boost::interprocess::open_only, "shmem")
{
g = segment.find<Shmem2DVector>("myVector").first;
gr = segment.find<Shmem2DVector>("myVector").first;
}
private:
boost::interprocess::managed_shared_memory segment;
};
相关文章:
- 调整大小后指向元素值的指针unordered_map有效?
- 如何在工厂方法中返回指向基于基础操作系统的派生类的有效指针
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 通过指针调用模板类成员函数 [为什么这是有效的 c++]?
- free():在有效指针异常中-使用流读取巨大文件时
- 释放 std::vector 中指针内存的最有效方法是什么?
- C++ 常量指向文字的指针有效吗?
- 是否存在将长整型转换为指针有效的情况
- 将指针传递给函数在简单的情况下有效,但在"class" -izing 之后不起作用
- 在映射中插入更多元素后,指向 QMap 中元素的指针是否仍然有效?
- 指向派生类的指针中的"static_cast<Base*>(static_cast<void*>(派生))"何时有效?
- 如何有效地使用 std::async 对指针数组执行操作
- 当程序从该函数调谐器时,指向在函数中声明和定义的某些 C 字符串的指针不再有效.为什么?
- EIGEN地图类:将C阵列映射到VectorXD指针以有效的方式
- 如何检查指针后面的对象是否有效或已删除?
- C++数组超出范围访问以计算指针有效?
- 提升::进程间managed_shared_memory指针有效作用域
- 为什么const_cast away volatile只对指针有效?
- 为什么将const类型的智能指针强制转换为类型的智能指针有效?