zoukankan      html  css  js  c++  java
  • 虚幻4的智能指针

    转自:https://www.cnblogs.com/timy/p/8685953.html

    虚幻自己实现了一套智能指针系统,为了跨平台。

    指针:

    占用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 );

    再多也没什么好说的,引擎里面有测试的例子。

    例子的文件在

    EngineSourceRuntimeCorePublicTemplatesSharedPointerTesting.inl

    顺带说一下,智能指针是不能指向UObject的,UObject自己已经实现了自动垃圾回收,当有UPROPERTY()的属性指向他时候,不会析构,当没有UPROPERTY属性指向他时候,会自动析构,也就是说,当定义一个指针,但是没有UPROPERTY()时候,指向了一个UObject,有可能这个Object已经析构了。这点要注意。

    智能指针的cast。

    TSharedPtr<ClassB> MyCurveButton= StaticCastSharedPtr<ClassA>(MyButton);
  • 相关阅读:
    第十五讲 实例模式
    第十四讲 实例模式
    将博客搬至CSDN
    CSU 1616: Heaps(区间DP)
    hdu 1281棋盘游戏(二分匹配)
    hdu 1042 N!(大数的阶乘)
    hdu 3371 Connect the Cities (最小生成树Prim)
    hdu 4502吉哥系列故事——临时工计划 (简单DP)
    hdu1230火星A+B (大数题)
    hdu1301 Jungle Roads (Prim)
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/10455613.html
Copyright © 2011-2022 走看看