c++ - 我如何在共享内存中使用运算符 `new` 和 `delete`?

标签 c++ memory-management shared-memory

我想使用共享内存在多​​个程序之间共享一些对象。

我在 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/

相关文章:

r - 我应该覆盖现有变量以节省 R 中的内存吗

ios - 在后台线程上保存数据时收到内存警告

c - 共享内存不分配?

c++ - "No matching function for call error"与 g++

c++ - GDB 无法访问 mmap() 的内核分配内存?

linux - 高内存架构

c - sem_wait 在我的程序中被忽略

c++ - 视觉接受来自 std::byte 迭代器的 std::string

c++ - 静态转换返回类型

c - 一个共享内存中的两个变量