写在前面
本专栏内容均为学堂在线慕课《3D游戏引擎架构设计基础》中的内容。个人将其转化成文字和图片的版本(个人更加喜欢文字版本的教程,阅读速度更快很多),方便查阅。
原课程链接:3D游戏引擎架构设计基础。
内存管理与插件机制
内存管理和扩展插件概述
内存管理
内存管理是引擎底层和核心内容之一,引擎中几乎所有顶层基类都是内存分配的类,所以内存管理决定了系统的运行效率。
引擎的内存管理从对象可分为CPU主内存和GPU的显卡内存;从操作类型可分为数据结构的分配和释放,以及数据访问。
第三方标准库,如STL、BOOST等,已经提供了各种数据结构的内存分配和管理,使用这些标准库可以简化游戏引擎的底层设计。如STL,将数据类型抽象为容器,将数据组织和算法分离,其中容器主要包括三种:序列容器(vector, deque, list等)、关联容器(map, multimap, set, multiset等)、容器适配器(stack, queue, priority_queue等)。
第三方库还提供了内存分配的保护机制,避免内存指针的使用错误,防止内存泄漏,如shared_ptr,weak_ptr,scoped_ptr等。
动态内存分配是指使用的时候分配内存&