1. 程式人生 > >C++ placement new

C++ placement new

#include <iostream>
#include <memory>
#include <intsafe.h>

#if !defined(CPP)

struct WangLiangLiang
{
	INT64 age;

	WangLiangLiang()
	{

	}

	~WangLiangLiang()
	{

	}
};


int main()
{
	WangLiangLiang * pMemeoryCache = new WangLiangLiang();

	pMemeoryCache->age = 33;

	WangLiangLiang * pReal = new (pMemeoryCache) WangLiangLiang();

	std::cout << pReal->age << std::endl;

	pReal->~WangLiangLiang();

	return 1;
}

#endif

   最近在搞UE4的一些東西,廠子裡的UE4 plugin.看到下面的程式碼,有一些迷糊,於是查了一下.上面的是測試用的程式碼.深表慚愧,幹了好幾年這東西都不知道,還是第一次見識到.貌似以前看書看過,不過確實沒啥印象.

  大意為在指定的預先分配好的記憶體上呼叫建構函式.好在我查了查,沒有稀裡糊塗.這樣很好,能不斷精進.

  繼續看...

FStaticMesh* StaticMesh = new(PrimitiveSceneInfo->StaticMeshes) FStaticMesh(
				PrimitiveSceneInfo,
				Mesh,
				ScreenSize,
				CurrentHitProxy ? CurrentHitProxy->Id : FHitProxyId()
				);