我对如何在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);
我得到“错误:'运算符='(操作数类型是'gameInfo'和'void *')”错误。什么是最快的解决方案?
即使您设法了解如何使用放置new
,您也无法使用shm_overview(7)的POSIX共享内存在Linux上运行示例。
因为std::string不是POD类并且包含其角色和行为未指定的内部指针。