Я хочу поделиться указателем карты во время двух процессов. Итак, я попробовал mmap. Я протестировал mmap в одном процессе. Вот мой код:
#include <vector>
#include <iostream>
#include <sys/mman.h>
#include <unistd.h>
#include <cstdlib>
#include <stdio.h>
#include <map>
using namespace std;
int main(int argc, char *argv[])
{
map<string,string> a, *b;
b = (map<string,string> *)mmap(&a,sizeof(map<string,string>),
PROT_READ|PROT_WRITE,MAP_ANON|MAP_SHARED,-1,0);
b->insert(map<string,string>::value_type("a","b")); //error
cout << b->size() << endl;
}
когда он переходит к b->insert()
, произошла ошибка сегментации. Если я уберу b->insert()
, ошибки не будет (осталось b->size
). В чем проблема с моим кодом?