avatar
文章
193
标签
39
分类
23
主页
文章
笔记
时间轴
项目
研发手记
更多
  • 搜索
  • 学习路线
  • 简历
  • 工具
  • 音乐
  • 视频
  • 感悟
  • 站点档案
  • 友链
  • GitHub
  • B站
岁迹
主页
文章
笔记
时间轴
项目
研发手记
更多
  • 搜索
  • 学习路线
  • 简历
  • 工具
  • 音乐
  • 视频
  • 感悟
  • 站点档案
  • 友链
  • GitHub
  • B站

岁迹

C++内存管理
发表于2026-09-16|研发手记UE-C++
C++ 内存管理 · 第一讲 primitives本讲围绕 C++ 内存管理的「基础构件 primitives」展开,核心结论: C++ 中有多种内存分配/释放方式,其中 new/delete 最终依赖 operator new/operator delete,而后者通常依赖 malloc/free。 new 不只是分配内存,还会调用构造函数;delete 不只是释放内存,还会调用析构函数。 数组分配必须使用 new[] / delete[],否则可能导致资源泄漏。 可以通过重载类内 operator new/delete 实现专属内存池,减少 malloc 调用次数和 cookie 开销。 将内存池逻辑抽取为通用 allocator,是向标准库分配器演进的关键一步。 =default 用于请求编译器生成默认版本,=delete 用于禁止某个函数;但 operator new/delete 没有可默认生成的版本。 一、四种内存分配和释放方法 在编程时可以通过上图的几种方法直接或间接地操作内存。下面将介绍四种 C++ 内存操作方法: 通常可以使用 mal...
oki_allocator
发表于2026-09-16|研发手记UE-C++
C++ 内存管理 · 第四讲 Loki allocator 来源:xubenshan.github.io — 第四讲 Loki allocator作者:小熊 | 2026/7/19 本讲剖析 Loki 库中 SmallObjAllocator 的三个 class 嵌套结构(chunk → FixedAllocator → SmallObjAllocator),并讨论其实现中的一个小 bug 及修复方法。 三个 class 结构嵌套的数据结构设计:最底层是 chunk,chunk 有三个成员,firstAvailableblock 代表下次可以用的第一个区块索引;blocks available 代表可用区块的数量。依次往上,最高层是 smallobjallocator。用户看到的是 smallobjallocator。 chunk 类中有一些函数:重点来看 reset 中有一个流水号索引设置。i 的类型是 unsigned int,代表一个字节大小的无符号整数。用 int 的话,4 个字节,会增加开销。空闲 block 第一个字节用于保存下一个 bloc...
other_allocator
发表于2026-09-16|研发手记UE-C++
C++ 内存管理 · 第五讲 other allocator 来源:xubenshan.github.io — 第五讲 other allocator作者:小熊 | 2026/7/19 本讲介绍 GNU C++ 中除 std::allocator 之外的其它分配器:array_allocator、malloc_allocator、debug_allocator、pool_allocator、bitmap_allocator 等,重点是 bitmap_allocator。 一般我们会把分配器用于容器中,不会自己手动使用分配器分配内存。比如: 123std::allocator<std::string> alloc;std::string* p = alloc.allocate(3); //分配3个string大小的内存alloc.deallocate(p, 3);//释放内存 用户在释放内存的时候需要手动输入释放的内存大小,这样很麻烦,用户需要牢记自己当初申请了多大的内存。 而使用容器,不需要手动调用 allocate 和 deallcoate...
malloc_free
发表于2026-09-16|研发手记UE-C++
C++ 内存管理 · 第三讲 malloc/free(VC6 内存分配) 来源:xubenshan.github.io — 第三讲 malloc/free作者:小熊 | 2026/7/19 本讲通过分析 VC6 在调用 main() 之前的初始化行为,来剖析 VC6 的内存管理机制,重点是 SBH(Small Block Heap,小区块堆)对小内存块的「分段管理」。 VC6 内存分配通过 VC6 调用 main 函数之前的初始化行为来分析 VC6 的内存管理。 下图是函数调用栈,在调用 main 函数之前还会调用很多函数。重点看 _heap_alloc_base 函数,这个函数内部判断了 size 的大小,当 size 小于 1016 的时候调用 _sbh_alloc_block 函数。大于时调用 windows 操作系统提供的 HeapAlloc 函数。也就是说 VC6 和第二章的分配器一样,都是为小区块服务的。大区块就直接交给操作系统进行处理。 在 vc10 底下,仍然有 _heap_alloc_base 函数,但函数内部不管...
基础篇
发表于2026-09-16|研发手记UE-C++
基础篇(P1-P12) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P1 1 - Welcome! (Course Structure)时长 3:07 | B站 P2 2 - GitHub Repository and Blank C++ Project时长 9:01 | B站 P3 3 - Project Walkthrough and first C++ Class UNREAL ENGINE 5.0EDITOR BASICS _ Tom时长 13:22 | B站 P4 4 - Adding Components (Third-person Camera)时长 10:55 | B站 P5 5 - Binding Movement Input时长 8:12 | B站 P6 6 - Character Setup & Course Content (GitHub Commit Example)时长 4:46 | B站 P7 7 - Character I...
AI篇
发表于2026-09-16|研发手记UE-C++
AI篇(P39-P51) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P39 39 - AI Overview (Behavior Trees, Blackboards, EQS)时长 5:09 | B站 P40 40 - Bot Behaviors and Movement时长 23:41 | B站 P41 41 - Custom Check Attack Range Service for BT时长 26:33 | B站 P42 42 - Custom C++ BT Task for Ranged Attacks时长 17:37 | B站 P43 43 - Environment Queries for smarter movement时长 19:07 | B站 P44 44 - Adding Sight with Pawn Sensing Component时长 12:34 | B站 P45 45 - Improving Bot Animations &a...
打磨优化
发表于2026-09-16|研发手记UE-C++
打磨优化(P94-P114) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P94 93 - Creating Main Menus with UMG时长 32:07 | B站 P95 94 - Creating In-Game Menus时长 12:22 | B站 P96 95 - Setup Widgets & Event-based logic for Buffs & Debuffs时长 18:32 | B站 P97 96 - Finishing Buff Bar & Animated materials for UI时长 15:14 | B站 P98 97 - Syncing ActionEffect (Duration) for Multiplayer时长 7:31 | B站 P99 98 - Widget Styling (HUD & Menus)时长 14:49 | B站 P100 99 - Animation Sta...
std_allocator
发表于2026-09-16|研发手记UE-C++
C++ 内存管理 · 第二讲 std::allocator 来源:xubenshan.github.io — 第二讲 std::allocator作者:小熊 | 2026/7/19 本讲核心: 各编译器(VC6 / BC5 / GCC)自带的 allocator 本质上都是对 malloc/free 的简单封装,分配出的内存带有 cookie。 想要去除 cookie,前提是「内存块大小一致」;大小不一就必须用 cookie 记录区块大小。 GCC 2.9 真正使用的是 std::alloc(二级分配器),它用 16 条链表 + 战备池(pool)管理 8~128 字节的小块,从而省掉 cookie。 std::alloc 分两级:第二级(__default_alloc_template)处理 ≤128 字节的小块,第一级(__malloc_alloc_template)用 malloc/free 处理大块。 一、malloc() 内部原理1、VC6.0 malloc 从上图可见,VC6 中的 malloc() 函数分配的内存里面除...
游戏系统
发表于2026-09-16|研发手记UE-C++
游戏系统(P52-P72) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P52 52 - Helpful utilities for game framework (static functions)时长 8:52 | B站 P53 53 - Improving bot firing logic (weapon accuracy, collision checks)时长 12:07 | B站 P54 54 - Damage feedback through Hitflash effect时长 4:45 | B站 P55 55 - 3D (Projected) Health bar with C++时长 30:11 | B站 P56 56 - Updating HUD Widgets (Health, Credits, GameTime) UMG Learning Resources _时长 15:15 | B站 P57 57 - Setup Proper Play...
网络同步
发表于2026-09-16|研发手记UE-C++
网络同步(P73-P93) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P73 75 - What is Network Replication时长 15:21 | B站 P74 76 - Networking the world interaction logic (RPCs)时长 24:49 | B站 P75 77 - Networking the Treasure Chest (RepNotify)时长 13:30 | B站 P76 78 - Assignment 6 Solution Review时长 13:07 | B站 P77 78 - Authority and Actor instances on Clients时长 9:00 | B站 P78 79 - Assignment 7 (Replicating Attributes & Power-ups)时长 3:17 | B站 P79 79 - Networking the Attribu...
1234…20
avatar
岁迹
记录游戏客户端开发、Unity 项目、个人 App 岁迹的开发过程。
文章
193
标签
39
分类
23
GitHub
公告
记录游戏客户端开发、项目复盘和个人成长。
最新文章
KiHan ActFramework详解2026-09-19
KiHan Manager台账速查2026-09-19
KiHan Plugin框架详解2026-09-19
KiHan UI框架详解2026-09-19
KiHan 框架阅读索引2026-09-19
分类
  • Unity/游戏客户端15
  • 其他笔记2
  • 博客搭建1
  • 图形与引擎25
  • 数据库与持久化9
  • 游戏拆解2
  • 研发手记73
    • Model6
标签
系统拆解 Unity常见框架学习 综合笔记 新手奖励 黑神话悟空 游戏设计 Notes image Java Model Algorithm Ugit 快速上手 数据持久化 游戏算法 笔记 火影海外 Unity项目以及安卓构建 Mysql UE 新建文件夹 设计模式 拍脸系统 研发手记 markdown 活动开发 面试题模拟 策划 UE-C++ C# GameEngineStudy Hexo Butterfly Games101 C++ 综合记录 Python Unity网络编程基础 无畏契约
归档
  • 九月 2026 32
  • 八月 2026 43
  • 六月 2026 118
网站信息
文章数目 :
193
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By 岁迹框架 Hexo 7.3.0|主题 Butterfly 5.5.5
鄂ICP备2026033623号