关于std::shared_ptr的思考与探究

      智能指针(管理指针的模板类)是 C++11 之后添加的新特性,它们非常有用,但是智能指针经常会带来内存碎片。游戏程序的内存往往非常紧张,所以这里探究了一下 std::shared_ptr 的内存分配以及内存同步的问题。   测试使用的是 vc141 x86 平台。 std::shared_ptr 内存分配   std::shared_ptr 的原理是引用计数。相比裸指针,智能指针需要在 […]

指针和REF

      指针继承自 C 语言,也是操作数据最灵活最强大的武器;REF,中文名为引用,则可以认为是指针的一个“语法糖”。REF 使用起来更方便、更安全、也更可靠,它和指针一样也具有多态性。   指针   指针可以看成一个复合类型,它由 A 和 T 组成,A 表示指针指向的物理地址, T 表示地址包含的类型。通常来说,A 在运行 […]

C++中的RTTI架构

      在 C++ 中,默认提供的运行时类型信息(Run-Time Type Information, RTTI)主要有三个目的: 支持 typeid 操作符 匹配以及捕获抛出的异常(异常分配器) 实现 dynamic_cast 操作符     dynamic_cast 只关注于继承多态的相关转换操作,而 typeid 以及 […]

C++11新特性——启动线程

    线程支持库   C++ 11 中新增了支持线程(thread )、互斥(mutual exclusion)、条件变量(condition variables)和 std::future(期货)。   本节是 C++ 11 并发的第一节,主要介绍多线程运行时的基本高级接口——std::async() 和 std::future 以及底层接口 std::thread 和 std […]

C++11 新特性——强类型枚举

    强类型枚举   C++ 有一个奇怪的设定,有名字的 enum 类型的名字和 enum 成员的名字都是全局可见的。比如下面这种情况,就会导致编译错误。 enum Type { General, Light, Medium, Heavy }; enum Category { General, Pistol, MachineGun, Cannon }; // 无法通过编译   如果能够提示错误, […]

C++11 新特性——类型推导

    写在前面   C++ 是有四个相关语言组成的联邦——C、object-C、template C++、STL。如果需要将这些东西全部杂糅到一起,总会出现一些抵触的情况,C++ 的编码也会变得更复杂。新标准增加了许多新特性,使得 C++ 更加易用。这些新特性是紧密相连,互为基础的。   在C++11中,规范提供了多种类型推导的机制,使得我们写出来的代码更精简、更灵活。   这个新的类型推导机制 […]