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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将结构分配给共享内存i c ++?相关的知识,希望对你有一定的参考价值。

我对如何在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类并且包含其角色和行为未指定的内部指针。

以上是关于如何将结构分配给共享内存i c ++?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过for循环将矩阵的值分配给数组

如何在C中释放指向结构的指针数组?

在C语言中,如何给函数分配内存?

C中的结构和指针(将字符串分配给结构)

分配给设备内存的 CUDA 全局(如 C 语言)动态数组

在C语言中,如何给函数分配内存?