为什么80%的码农都做不了架构师?>>>   


在游戏开发,确切的讲是engine开发中什么时候使用smart pointer?
现代游戏engine开发几个特点:
  • 规模很大
  • 效率是核心竞争力
  • 多线程等由硬件定制的特点

那么在考虑是否使用smart pointer的时候,效率不可避免。

smart pointer的属性就是:自己管理自己,当没人需要,就销毁。

这样看来:

  • 在资源的所有者不明的时候,应该使用smart pointer。
  • 资源所有者明确的时候(也就是不需要自我管理),就由所有者来负责内存的管理。
  • 作为memory leak的处理方式个人不是很喜欢,smart pointer不是唯一的处理方法,不停地加加减减比较烦。
  • 作为参数和返回值也不好,完全没必要,应该是用内部的raw pointer来做,然后到归属地的时候再smart pointer包起来。
  • 多线程安全,目前看来比较好的方法是在初始化的时候定下所属的线程,然后在非shipping版本里面runtime的进行所属线程的assert。

原文链接: http://blog.csdn.net/ccanan/article/details/6091760

转载于:https://my.oschina.net/dtec/blog/44878

smart pointer in gamedev相关推荐

  1. 理解smart pointer之三:unique_ptr

    unique_ptr最先在boost中被定义,后来被C++标准委员会选中为C++11的feature之一. std::unique_ptr is a smart pointer that retain ...

  2. 【C++】智能指针 Smart Pointer

    智能指针 智能指针 Smart Pointer auto_ptr 智能指针的自实现 shared_ptr weak_ptr unique_ptr 智能指针 Smart Pointer 用来改善传统指针 ...

  3. C++ smart pointer

    C++ smart pointer 什么是 smart pointer/智能指针? 1.定义 2.实现 3.应用 std::shared_ptr 转载于:https://www.cnblogs.com ...

  4. Smart Pointer

    以下内容摘自<http://blog.csdn.net/asanscape/article/details/6084600> Smart Pointer在初始化或释放等操作时,它们是一个对 ...

  5. [C++] 什么是智能指针(Smart Pointer)以及何时使用

    答案 1 智能指针是一个类,它封装了一个原始的C++指针,以管理所指对象的生命期.没有单一的智能指针类型,但所有这些都尝试以实用的方式抽象原始指针. 智能指针应优先于原始指针. 如果你觉得你需要使用指 ...

  6. 学习笔记 | c++中的smart pointer四个智能指针 shared_ptr、unique_ptr、weak_ptr、auto_ptr

    c++中的smart pointer四个智能指针 C++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr其中后三个是c++11支持,并且第一个 ...

  7. c++ smart pointer 趣谈

    上班的时候同事问起我一段项目中的旧代码,大致如下 void foobar() {// some code herechar* buffer = new char[length];std::auto_p ...

  8. C++中的 smart pointer 四个智能指针

    四个智能指针 C++智能指针 为什么要使用智能指针: auto_ptr(c++98 的方案,cpp11 已经抛弃) unique_ptr(替换 auto_ptr) shared_ptr weak_pt ...

  9. c++中的smart pointer四个智能指针简单介绍

    C++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被11弃用. 为什么要使用智能指针: 智能指 ...

最新文章

  1. 如何将一键还原精灵备份文件复制出来?
  2. 1. 金融数学中的随机变分法-Wiener空间与Wiener泛函
  3. tf.broadcast_to
  4. SIFT四部曲之——构建关键点特征描述符
  5. Java实现图片转PDF
  6. boost::system::error_code相关的测试程序
  7. 数据归一化matlab及python 实现
  8. usb大容量存储设备驱动_usb无法识别怎么办 如何解决usb识别故障【详细步骤】...
  9. python数据分析_使用Python进行数据分析
  10. Linux查看进程是否占用,Linux 下查看哪个进程占用swap空间
  11. 《R in Action》读书笔记(2)
  12. HTML iframe标签下 子页面调用父页面js 容易产生的跨域调用问题 Uncaught DOMException
  13. matlab画图线形
  14. Windows 8 平板电脑体验及思考
  15. 快对作业超级计算机,快对作业2020
  16. matlab grab cut,matlabGrabCutS graph 算法, 编写,可以运 能直观看到结果。 272万源代码下载- www.pudn.com...
  17. 如何正确的做技术选型
  18. Excel下拉框设置多选
  19. orbot android教程,Android Orbot malformed reply from SOCKS server
  20. input 使用outline属性去掉淡蓝色边框不生效

热门文章

  1. vs插件ZunKoIDE
  2. 《JavaScript 闯关记》之原型及原型链
  3. Tesseract-OCR引擎 入门
  4. python中如何跳出多层循环
  5. APUE读书笔记 之 进程关系
  6. Access数据库出现的0x80004005 Unspecified error问题
  7. ROS系统 实现客户端Client和服务端Server
  8. PDF Annotator 8中文版
  9. PowerDesigner最基础的使用方法入门学习2
  10. HOWTO:安装包卸载时如何保留部分文件不被卸载