Create multiple static meshes at runtime?

I’m making an arcade-style snake game, and I’ve run into issues while trying have a TArray of meshes.
I’m trying to make duplicates of the same mesh (at different positions) at runtime.

Here’s the relevant code I’m using currently:

//ASnake.h

	/*Snake Body Array*/
	UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = PlayerModel, meta = (AllowPrivateAccess = "true"))
	TArray<UStaticMeshComponent*> SnakeBody;

	/*The asset that will build the array*/
	UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = PlayerModel, meta = (AllowPrivateAccess = "true"))
		UStaticMesh* SnakeBodyAsset;

//ASnake.cpp
//Constructor
ASnake::ASnake()
{
    //...
    SnakeBodyAsset = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(), NULL, TEXT("/Game/Meshes/SnakeBody/SnakeBody")));
    //...
}
//This function is called at runtime
void ASnake::AddPoint()
{
	//Snake Body Mesh
	UStaticMeshComponent* TempMesh = NewObject<UStaticMeshComponent>(this, UStaticMeshComponent::StaticClass(), FName("SnakeBody"));
	TempMesh->SetupAttachment(RootComponent);
	bool loaded = TempMesh->SetStaticMesh(SnakeBodyAsset);
	TempMesh->SetRelativeLocation(FVector(0.0f, 35.0f * SnakeBody.Num(), -40.0f));
	TempMesh->SetRelativeRotation(FRotator(0.0f, 0.0f, 90.0f).Quaternion());
	TempMesh->SetWorldScale3D(FVector(0.25f));
	TempMesh->RegisterComponentWithWorld(this->GetWorld());
	SnakeBody.Add(TempMesh);
}

Ingame, when I call the AddPoint method, the first meshcomponent is created alright.

In the subsequent calls, the TArray increments, but all the mesh components in the array are treated as if they have the same pointer. Change the position of SnakeBody[0] and it changes the position of every component in the Array. What am I doing wrong?