【发布时间】:2014-06-03 02:44:28
【问题描述】:
我想要的是使用名为 ShmObj 的类访问托管共享内存对象的数据信息,该类将共享对象的原始指针作为私有成员,如下面的代码块。
我的问题是主程序分段错误。我猜绝对原始指针会导致问题。我试图将原始指针更改为 bi::offset_ptr 但没有帮助。任何帮助表示赞赏。
ShmObj.h
#include <string>
#include <boost/interprocess/managed_shared_memory.hpp>
namespace bi = boost::interprocess;
class ShmObj {
public:
ShmObj() {
bi::managed_shared_memory segment(bi::open_only, "shm");
pNum = segment.find<int>("Number").first;
}
int getNumber() {return *pNum;}
virtual ~ShmObj() {}
private:
int* pNum;
};
main.cpp
#include "ShmObj.h"
#include <iostream>
int main() {
ShmObj X;
std::cout << X.getNumber() << std::endl;
}
【问题讨论】:
标签: c++ pointers boost boost-interprocess