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

指针:

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

[UE4]虚幻4的智能指针的更多相关文章

  1. 【UE4 C++ 基础知识】<15> 智能指针 TSharedPtr、UniquePtr、TWeakPtr、TSharedRef

    基本概念 UE4 对 UObject 对象提供垃圾回收 UE4 对原生对象不提供垃圾回收,需要手动进行清理 方式 malloc / free new / delete new与malloc的区别在于, ...

  2. cpp智能指针

    weak_ptr<Cls1> wp1; { shared_ptr<Cls1> ptr1(new Cls1);//共享指针 wp1 = ptr1;//临时共享指针 std::co ...

  3. enote笔记法使用范例(2)——指针(1)智能指针

    要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” 在&l ...

  4. C++11 shared_ptr 智能指针 的使用,避免内存泄露

    多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为 ...

  5. C++智能指针

    引用计数技术及智能指针的简单实现 基础对象类 class Point { public: Point(int xVal = 0, int yVal = 0) : x(xVal), y(yVal) { ...

  6. EC笔记:第三部分:17、使用独立的语句将newed对象放入智能指针

    一般的智能指针都是通过一个普通指针来初始化,所以很容易写出以下的代码: #include <iostream> using namespace std; int func1(){ //返回 ...

  7. 智能指针shared_ptr的用法

    为了解决C++内存泄漏的问题,C++11引入了智能指针(Smart Pointer). 智能指针的原理是,接受一个申请好的内存地址,构造一个保存在栈上的智能指针对象,当程序退出栈的作用域范围后,由于栈 ...

  8. 智能指针unique_ptr的用法

    unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法: std::unique_pt ...

  9. 基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

随机推荐

  1. C++指针总结

    在C++中通过动态创建的对象,我们只能获得一个指针,并通过指针控制它.指针是存放对象的内存地址值,更准确的描述是对象的起始地址值.每一个指针都有一个相关的类型,不同数据类型的指针之间的区别不在指针的描 ...

  2. ssh 登陆进去后, .bashrc 也没有被执行

    查了一下,ssh login 之后, 会执行 .bash_profile 于是新建一个.bash_profile , 内容如下 if [ -f ~/.bashrc ]; then . ~/.bashr ...

  3. SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍

    原文 SpringBoot 中常用注解 @Controller/@RestController/@RequestMapping介绍 @Controller 处理http请求 @Controller / ...

  4. 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器

    转自:https://blog.csdn.net/tjiyu/article/details/53148174 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服 ...

  5. wpf窗口阴影

    https://www.cnblogs.com/yiyan127/p/6362509.html

  6. Silverlight自定义控件系列 – TreeView (4) 缩进

    接下来是缩进,没有缩进的Tree怎么看都不顺眼. 首先,定义节点深度Depth(注:回叫方法暂没有代码,以后要用到): 1: /// <summary> 2: /// Using a De ...

  7. English trip -- VC(情景课)5 Around Town

     Around Town  城市周围 Talk about the picture 看图说话 sentences Where are you? I'm in the Meten classroom. ...

  8. 12月15日 session:Ruby on Rails Security Guide//从第3节开始没有学习//关于find_by 和where的区别用法思考。

    http://guides.rubyonrails.org/security.html#user-management 2.session笔记见13日的随笔. http://www.cnblogs.c ...

  9. zzuli1985(dp/水dfs郑轻比赛)

    再一次感受到dp的威力 1985: 即将到来的新生赛 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 112  Solved: 28 SubmitStat ...

  10. HDOJ1000

    #include<iostream> using namespace std; int main() { int a,b; while(cin >> a >> b) ...