C++ 是否可以将整个对象放入共享内存?C++;

C++ 是否可以将整个对象放入共享内存?C++;,c++,shared-memory,C++,Shared Memory,我想将一个对象放入共享内存。比如说有一门课叫动物 int main() { int shmid; Animal * a; shmid = shmget(IPC_PRIVATE, sizeof(Animal), IPC_CREAT | IPC_EXCL ); a = (Animal *)shmat(shmid,0,0); *a = Animal(); } 我总是从这种方法中得到总线错误。是否可

我想将一个对象放入共享内存。比如说有一门课叫动物

    int main()
    {
       int shmid;

       Animal * a;

       shmid = shmget(IPC_PRIVATE, sizeof(Animal), IPC_CREAT | IPC_EXCL );

       a = (Animal *)shmat(shmid,0,0);

       *a = Animal();
     }

我总是从这种方法中得到总线错误。是否可以将整个对象放入共享内存?提前感谢。

是的,使用placement
new
@user3528438:huh?:)你是怎么把它贴在这里的?这取决于对象。如果它完全由基本类型组成,那么它应该是可能的。如果它使用容器、字符串或类似的东西,那么你需要自定义分配器,它也使用共享内存。“我总是从这种方法中得到总线错误。”-你的意思是消费者应用程序正在崩溃,不是这个代码片段,对吗?@KarolyHorvath:
*a=
很可能导致
操作符=
因总线错误而崩溃。如果赋值运算符试图清除旧内容,但对象未初始化,则可能会出现不好的情况。