C++ placement new
阿新 • • 發佈:2018-12-21
#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() );