如何将结构分配给共享内存i c ++?

时间:2018-02-10 14:55:16

标签: c++ struct shared-memory

我对如何在C中使用共享内存有一个模糊的想法,我试图在C ++程序中使用相同的方法。 我想分享一个结构:

typedef struct 
{
    string passw;
    string encoded;
    string tries;
    char steps;
}gameInfo;

gameInfo *gI;

这就是我尝试这样做的方式:

int memory;
memory = shmget(IPC_PRIVATE, sizeof(gameInfo)*max_players, IPC_CREAT | 0600);
if(memory==-1)
    {printf("Shared memory error");}

(后)

*gI = shmat(memory,NULL,0);

我得到"错误:'operator ='不匹配(操作数类型是'gameInfo'和'void *')"错误。 什么是最快的解决方案?

1 个答案:

答案 0 :(得分:2)

即使您设法了解如何使用展示位置new,也无法使用shm_overview(7)中的POSIX共享内存在Linux上运行示例。

因为std::string不是POD类,并且包含内部指针,其角色和行为未被指定。