如何使用mmap指向STL类型?

sri*_*eak 1 c++ stl mmap

我有一个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调用以指向地图?

Nik*_*sov 6

您不希望将STL容器存储在共享内存中,至少不要共享它们.原因是它们严重依赖堆分配,因此开箱即用std::map将保留指向不同进程的虚拟地址空间的指针.

看一下boost::interprocess在C++中处理这种情况的方法.