What happens to the memory in the case below? And what would be the best way to deal with this?
.h
UPROPERTY()
UObject* MyObject;
.cpp
MyObject = NewObject<UNormalObject>();
**// some time later...**
**// What happens to the previous content of MyObject? Is it deleted?**
MyObject = NewObject<USpecialObject>();
I’m sorry if this question is a duplicate, I haven’t found similar posts.
Thank you!
That’s actually fine. Every time a UObject is created, it’s registered with the GC system. If no class is holding on to that reference (via a UPROPERTY), then the object is deleted during GC.
If you want to “force” it to be cleaned up ASAP, you can simply call “MyObject->MarkPendingKill()” before you toss the reference away.