FString in TArray of pointers changes its value to garbage

I’m pretty sure that’s not true, but I’m not 100% on that. I’ve created plenty of things with outer’s the way you suggest and always seem to be able to free the object by only clearing out the member I have that references them. If what you were suggesting were true, I would also have to change the outer because the outer would keep the object alive.

From Epic’s own documentation: " One practical implication here is that you typically need to maintain a UPROPERTY reference to any Object you wish to keep alive, or store a pointer to it in a TArray or other Unreal Engine container class." here
They specifically call out Actors (since they’re referenced by the world) and Actor Components (referenced by an Actor), but not arbitrary outers. Do objects know the things they’re outers of? I’ve never seen a member on object that does that. At best you could keep your outer alive, but your outer can’t keep you alive.