主要观点:介绍一种在 C 和 C++ 中用“索引句柄”替代原始和智能指针的动态内存管理方法,强调将内存管理移入中央系统、将同类型项分组为数组、使用公共索引句柄代替指针以及考虑内存安全等方面。
关键信息:
- 系统负责自身内存分配,可优化内存布局和减少内存碎片。
- 按类型分组数组可提高缓存利用率和检测内存泄漏。
- 用索引句柄代替指针,减少内存访问和提高安全性。
- 内存安全检查在句柄转指针函数中进行,可通过句柄的空闲位检测悬空访问。
- 可利用句柄在不同进程间共享对象、创建组句柄等。
- 2018 年 11 月 28 日更新了避免句柄碰撞的简单方法,即每个数组槽有自己的生成计数器。
重要细节: - 系统通过明确函数 API 与其他系统和用户代码分离,在中央循环处理数据。
- 数组项按类型分组可保证内存紧密排列,方便缓存利用和数据布局更改。
- 句柄需有自己的 C/C++类型,防止类型错误,运行时内存安全检查在句柄转指针函数中。
- 生成计数器可避免句柄碰撞,槽满后可禁用槽,减少句柄位数。
- 示例有 sokol-gfx API、Oryol Gfx 模块和 Oryol Animation 扩展模块。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。