标签:内存管理
-
lambda 与 Callable 的捕获语义:拷贝还是引用
GDScript 的 lambda 捕获是"按值拷贝"——但 Variant 的拷贝语义让这句话有坑:int 是真拷贝,Array/Dictionary 是写时复制的共享,Object 是指针拷贝。这篇用三个实验把捕获规则钉死,并给出循环捕获和生命周期两个实战建议。
-
Resource 的引用计数与 ResourceCache:资源为什么不会重复加载
从 Ref 模板到 ResourceCache 全局哈希表再到 ResourceLoader 的加载链,讲清 Godot 4.x 里一份资源从磁盘到内存、再到被共享和释放的完整生命周期。
-
UE 智能指针家族:TSharedPtr/TSharedRef/TWeakPtr 与 TObjectPtr
分清 UE 两套指针系统的管辖边界:引用计数管非 UObject,GC 管 UObject;TObjectPtr 在 5.x 里改变了什么。
-
UObject 生命周期:从 NewObject 到 ConditionalBeginDestroy
把 UObject 从出生到销毁的每个阶段拆开来,讲清各阶段允许做什么、不允许做什么。
-
ObjectDB 与对象泄漏检测:退出时那堆 "ObjectDB instances leaked" 怎么读
游戏退出时打印的 "ObjectDB instances leaked at exit" 不是报错是遗产清单,这篇讲 ObjectDB 的注册机制、泄漏报告的读法,以及它和 Orphaned Nodes 的区别。
-
GDScript 的内存模型:引用计数、树所有权与循环引用
GDScript 侧的对象分三类管生命周期:Object 手动、RefCounted 引用计数、Node 场景树所有权。三类之间的混用规则是循环引用泄漏的根源,这篇把不变式和常见泄漏模式列全。
-
-
弱引用三兄弟:TWeakObjectPtr 的过期判定原理
讲清 TWeakObjectPtr/FWeakObjectPtr 的 index+serial number 机制,以及为什么不需要析构回调。
-
RefCounted 引用计数与 memnew/memdelete:引擎为什么不用 shared_ptr
Godot 的资源生命周期靠 RefCounted + Ref<T> 管理,内存分配靠 memnew/memdelete 宏。这篇讲这套组合为什么故意绕开 std::shared_ptr,以及引用计数在继承体系里是怎么实现的。