TArray of ArrowComponents causes nullptr

I am creating a TArray with 4 Subobject arrowcomponents like this:

UPROPERTY()
TArray<UArrowComponent*> Locations;

UArrowComponent* T1 = CreateDefaultSubobject<UArrowComponent>(TEXT("T1"));
...
T1->SetRelativeLocationAndRotation(FVector(300.f, -300.f, 0.f), FRotator(-60.f, -45.f, 0.f));
...
Locations.Add(T1);
...
for (int i{}; i < Locations.Num(); i++) { Locations[i]->SetupAttachment(GetRootComponent());}

However when trying to access their positions via a for loop in beginplay, the editor crashes with exception access violation at the fourth element (i = 3). Even though I have set a value, identically to the previous three.

for (int i{}; i < Locations.Num(); i++)
{
    UE_LOG(LogTemp, Warning, TEXT("Pos: %s"), *Locations[i]->GetComponentLocation().ToString())
}                                                        

Since it it crashing in beginplay, I know there are no immediate issues in my constructor. I have tried putting all my arrow components in the header file with their own UPROPERTY(), but with no change. I have also checked that there actually are 4 elements in the TArray.
Thanks for helping.

Not sure why you’d have a null value in this case, but in general you shouldn’t assume UPROPERTY UObject pointers are non-null.