在特定的内存地址创建新的 C 对象?

新手上路,请多包涵

在 C++ 中是否可以在特定的内存位置创建一个新对象?我有一块共享内存,我想在其中创建一个对象。这可能吗?

原文由 Chris 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 805
2 个回答

您想要 放置 new () 。它基本上使用一块现有内存而不是从堆中分配新内存来调用构造函数。

编辑: 确保您了解有关负责为使用放置 new() 创建的对象显式调用析构函数的注释,然后再使用它!

原文由 D.Shawley 发布,翻译遵循 CC BY-SA 3.0 许可协议

int *ptr=(int *)0x1234;
classname *objname = new (ptr) classname;

你可以通过简单地做到这一点。

原文由 Hassan Ali 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题