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;
}
但是,這是我的理解,這是更難的數據類型vector>而不是一個簡單的整數。我是否需要編寫一個自定義的分配器(如果有的話,是否有任何簡單的方法可以做到這一點?我發現的例子都非常複雜......)來實現這個工作,或者這個例子有一個簡單的擴展那會讓我把一個vector放在共享內存中?
退房Boost.Interprocess中。 –
不幸的是,這實際上是一項家庭作業,明確提到「不要使用Boost」。我只是想知道是否有一個乾淨的方式來做到這一點... – user1023465
你需要de- /序列化你的載體的內容! –