【问题标题】:Constructing a c++ object in a specific memory location [duplicate]在特定内存位置构造c ++对象[重复]
【发布时间】:2019-01-18 14:13:45
【问题描述】:

我正在尝试在特定内存位置运行类的构造函数/默认初始化程序。

我正在尝试使用池,因此我已经为对象分配了内存(使用 malloc),并且我有我想去的地址。

我只是不知道如何在那个 void* 位置运行对象的构造函数。

这可能吗?

【问题讨论】:

    标签: c++


    【解决方案1】:

    阅读更多关于 C++ 的内容(它是一种非常复杂的编程语言;很少有人能完全掌握它,我当然不会)。我推荐一本好书,例如Programming: Principle and Practice Using C++(C++ 的主要设计师Stroustrup 所著)。然后查看一些 C++ reference 站点和一些标准,如 n3337(用于 C++11)或一些更新版本(如 C++14 或 C++17)。

    你想要placement new,所以用1在指针p(声明void*p;)的位置构造一个类Cla的对象,你的代码:

    Cla*ptr = new(p) Cla(1);
    

    顺便说一句,如果SubClaCla 的子类(具有两个参数的适当构造函数),您当然可以拥有Cla*ptr = new(p) SubCla(1, "x");

    【讨论】:

      猜你喜欢
      • 2011-03-16
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 2011-01-27
      • 2012-12-05
      相关资源
      最近更新 更多