0
C++의 공유 메모리에 플로트 벡터 벡터를 저장해야합니다. 공유 메모리에 정수를 저장하는 장난감 예제가 있습니다. 이것은 코드입니다 :C++에서 공유 메모리에 플로트 벡터 벡터를 저장하려면 어떻게해야합니까?
int main()
{
int pid;
int start = 0;
int shmid;
key_t key;
key = 123;
int *shm;
if ((shmid = shmget(key, sizeof(int), IPC_CREAT | 0666)) < 0)
{
perror("shmget");
exit(1);
}
shm = (int *) shmat(shmid, NULL, 0);
pid = fork();
if (pid > 0)
{
wait(NULL);
cout << *shm << *(shm+1);
}
else if (pid == 0)
{
*shm = 6;
*(shm+1) = 7;
}
else
{
exit(-1);
}
cout << endl;
return 0;
}
그러나 이것은 단순한 정수가 아닌 데이터 유형 벡터가 훨씬 더 어렵다는 것을 이해합니다. 커스텀 할당자를 작성해야합니까? (그렇다면 간단한 방법이 있습니까? 찾은 예제는 모두 꽤 복잡합니다 ...)이 작업을 수행하거나이 예제를 간단히 확장 한 것입니다 벡터를 공유 메모리에 놓을 수 있습니까?
체크 아웃 Boost.Interprocess (또는, C++ 스타일의 반복을 사용하지 않는 경우). –
불행히도 실제로는 "부스트를 사용하지 마십시오"라고 명시 적으로 언급 한 숙제입니다. 이 작업을 수행 할 수있는 확실한 방법이 있는지 궁금합니다 ... – user1023465
벡터 내용을 삭제/직렬화해야합니다! –