2

私たちが持っていると言う

Class A{};
int *p = malloc(100);
A a; //default constructor in use
*p = A; (question???)

割り当てメモリpでタイプAのオブジェクトを初期化する方法は?

4

1 に答える 1

8

特定のアドレスでクラスインスタンスをインスタンス化するには、placementnewを使用する必要があります。

#include <new>
#include <stdlib.h>

class A
{};

int main()
{
  void *p = malloc(100);
  A* a = new(p) A();
  a->~A();  // call destructor explicitly
  free(p);
}

new配置を使用する場合は、デストラクタを明示的に呼び出す必要があることに注意してください。

于 2012-05-22T20:29:36.060 に答える