For loop when given character Hit Result triggers multiple times

i got it working with this

TArray<FHitResult> OutHits;
FCollisionQueryParams Params;
FVector Start = GetRootComponent()->GetComponentLocation();
FVector End = Start + 0.1f;
FCollisionShape CS;
CS.MakeSphere(1000.f);
CS.SetSphere(1000.f);


if (GetWorld()->SweepMultiByObjectType(OutHits, Start, End, FQuat::Identity, FCollisionObjectQueryParams(ECC_Pawn), CS, Params))
{
	int32 Segments = 1;
	DrawDebugSphere(GetWorld(), Start, CS.GetSphereRadius(), Segments, FColor::Blue, true);
}

TArray<AShooterCharacter*> CharactersHit;

for (const FHitResult& ArrayElements : OutHits)
{
	int32 Segments = 1;
	DrawDebugSphere(GetWorld(), ArrayElements.ImpactPoint, 20.f, Segments, FColor::Blue, true);

	AShooterCharacter* HitCharac = Cast<AShooterCharacter>(ArrayElements.GetActor());
	CharactersHit.AddUnique(HitCharac);
}

#But when i add this

for (const AShooterCharacter* const ArrayElements : CharactersHit)
{
	const FString& PlayerName = ArrayElements->GetActorLabel();
	GEngine->AddOnScreenDebugMessage(-1, 3.f, FColor::Blue, FString::Printf(TEXT("character hit: %s"), *PlayerName));
}

it crashes

and i need this to iterate through the refined CharactersHit which has no duplicates from AddUnique()