[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