虚幻 Unreal Engine 4内存管理
2018-12-26 本文已影响0人
珏_Gray
不受内存管理的内存
- malloc & free
- new & delete
new与malloc的区别在于,new在分配内存完成之后会调用构造函数。
内存管理的内存
- 对于不是继承自UObject的Native C++类,使用TSharedPtr、TAutoPtr、TWeakPtr、TSharedRef、TScopedPointer管理
- 对于继承自UObject的子类
创建: UObject::NewObject<> 或是 UObject::ConstructObject<>,其中ConstructObject可以做更复杂的参数配置
销毁:当计数为0时,自动释放;调用UObject::ConditionalBeginDestroy()手动释放。若要强制调用垃圾回收,则调用UWorld::ForceGarbageCollection(true)。 - 对于继承自AActor的子类
创建: UWorld::SpawnActor<>
销毁: AActor::Destroy() - TArray<>数组需要用UPROPERTY()修饰,否则会导致内存管理错误
- 继承自UActorComponent的组件,使用AActor::CreateDefaultSubobject<>,同样组件的指针变量也需要用UPROPERTY()修饰。