我有一个char指针的mmap类型转换
char*ptr;
ptr =(char*)mmap(0,FILESIZE,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0);
这是我早期的代码.但是现在我想在需求发生变化时使用地图而不是char*.
现在,我的地图被声明为map <int,string> i_s_map;
如何更改我的mmap调用以指向地图?
您不希望将STL容器存储在共享内存中,至少不要共享它们.原因是它们严重依赖堆分配,因此开箱即用std::map将保留指向不同进程的虚拟地址空间的指针.
看一下boost::interprocess在C++中处理这种情况的方法.