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.
Unreal's garbage collection system and UPROPERTY( )
How to do it...
Say we have a UCLASS() macro as follows:
UCLASS() class MYPROJECT_API AWarrior : public AActor { //TArray< FSoundEffect > Greets; // Incorrect UPROPERTY() TArray< FSoundEffect > Greets; // Correct };
You'd have to list the TArray member as UPROPERTY() for it to be properly reference-counted. If you don't do so, you'll get an unexpected memory error-type bug sitting about in the code.
...