[UE4]虛幻4的智能指針


虛幻自己實現了一套智能指針系統,為了跨平台。

 

指針:

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

引用計數控制器需要12字節,

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

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

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

 

引用:

弱引用:

// Allocate a new tree node
TSharedRef<FTreeNode> NodeOwner( new FTreeNode() );

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

再多也沒什么好說的,引擎里面有測試的例子。

例子的文件在

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

 

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

 

智能指針的cast。

TSharedPtr<ClassB> MyCurveButton= StaticCastSharedPtr<ClassA>(MyButton);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM