Unreal's garbage collection system and UPROPERTY( )
When you have an object (such as TArray< >) as a UPROPERTY() member of UCLASS(), you need to declare that member as UPROPERTY() (even if you won't edit it in Blueprints); otherwise, TArray will not stay allocated properly.