[UE4]虛幻4的智能指針

虛幻本身實現了一套智能指針系統,爲了跨平臺。node

 

指針:測試

佔用8個字節,4個字節的Object指針,4字節的引用計數控制器的指針,spa

引用計數控制器須要12字節,指針

一個C++的Object指針4字節,一個共享引用計數,4字節,一個弱引用計數,4字節。code

簡單用法以下,當sharepoint被銷燬或者執行 =nullptr 時候,就自動清理Class的內存。server

TSharedPtr<Class Name> sharepoint = Makeshareable(new Class Name());blog

 

引用:內存

弱引用:ast

// Allocate a new tree node
TSharedRef<FTreeNode> NodeOwner( new FTreeNode() ); // Create a weak pointer to the new tree node
TWeakPtr<FTreenode> NodeObserver( NodeOwner );

再多也沒什麼好說的,引擎裏面有測試的例子。class

例子的文件在

Engine\Source\Runtime\Core\Public\Templates\SharedPointerTesting.inl

 

順帶說一下,智能指針是不能指向UObject的,UObject本身已經實現了自動垃圾回收,當有UPROPERTY()的屬性指向他時候,不會析構,當沒有UPROPERTY屬性指向他時候,會自動析構,也就是說,當定義一個指針,可是沒有UPROPERTY()時候,指向了一個UObject,有可能這個Object已經析構了。這點要注意。

 

智能指針的cast。

TSharedPtr<ClassB> MyCurveButton= StaticCastSharedPtr<ClassA>(MyButton);
相關文章
相關標籤/搜索