ソースを参照

feat: 添加UE GC 流程

NiceTry12138 6 ヶ月 前
コミット
4846a1b7d9
2 ファイル変更30 行追加0 行削除
  1. BIN
      UE5/内存/GC/Image/001.png
  2. 30 0
      UE5/内存/GC/README.md

BIN
UE5/内存/GC/Image/001.png


+ 30 - 0
UE5/内存/GC/README.md

@@ -0,0 +1,30 @@
+# GC
+
+## 创建一个新的 UObject
+
+在 `UObject` 的基类是 `UObjectBaseUtility`, `UObjectBaseUtility` 的基类是 `UObjectBase`
+
+`UObjectBase` 的构造函数中就做了一个事情 `AddObject`,最终会将该对象添加到 `GUObjectArray`
+
+```cpp
+void UObjectBase::AddObject(FName InName, EInternalObjectFlags InSetInternalFlags, int32 InInternalIndex, int32 InSerialNumber)
+{
+	NamePrivate = InName;
+	EInternalObjectFlags InternalFlagsToSet = InSetInternalFlags;
+    
+    // 设置 Tag ... do something ...
+
+	GUObjectArray.AllocateUObjectIndex(this, InternalFlagsToSet, InInternalIndex, InSerialNumber);
+	check(InName != NAME_None && InternalIndex >= 0);
+	HashObject(this);
+	check(IsValidLowLevel());
+}
+```
+
+`GUObjectArray` 是一个全局唯一的 `FUObjectArray`,也就是说所有创建的 `UObject` 对象都会保存在这个数组里面
+
+![](Image/001.png)
+
+在 `StaticAllocateObject` 全局函数中
+
+