我想使用共享内存在多个程序之间共享一些对象。
我在 this site 找到了示例.它没有任何对象分配,只是直接寻址,但我想在共享内存中创建结构或类。
最佳答案
因为内存已经分配好,你想使用placement new:
void * ptr = shmat(shmid, 0, 0);
// Handle errors
MyClass * x = new (ptr) MyClass;
然后,MyClass
的新实例将在ptr
指向的内存中构造。
当不需要该对象时,您必须手动调用析构函数(不释放内存)。
ptr->MyClass::~MyClass();
关于c++ - 我如何在共享内存中使用运算符 `new` 和 `delete`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10518820/