Widget GarbageCollection crash

I have this code that crashes me because it enters garbage collection.

I have tried many options, but I can’t find the right one.

USingleMarker* UCompass::AddMarker(FTargetInfo TargetInfo)
{
    UOverlaySlot* OverlaySlot;
    
    USingleMarker* SingleMarkerWidget = CreateWidget<USingleMarker>(this, SingleMarkerClass);
    
    if(SingleMarkerWidget)
    {
        SingleMarkerWidget->TargetInfo = TargetInfo;
        switch (TargetInfo.MarkerCustomization.MarkerType)
        {
        case EMarkerType::ScreenMarker:
            ScreenMarkers.Add(SingleMarkerWidget);
            ScreenMarkers[ScreenMarkers.Num()-1]->AddToViewport(); // Add last
            break;
        case EMarkerType::CompassMarker:
            SingleMarkerWidget->Indicator->SetVisibility(ESlateVisibility::Collapsed);
            CompassMarkers.Add(SingleMarkerWidget);
            OverlaySlot = CompassMarkerOverlay->AddChildToOverlay(SingleMarkerWidget);
            OverlaySlot->SetHorizontalAlignment(EHorizontalAlignment::HAlign_Center);
            OverlaySlot->SetVerticalAlignment(EVerticalAlignment::VAlign_Center);
            break;
        case EMarkerType::None:
            HiddenMarkers.Add(SingleMarkerWidget);
            break;
        }
    }
    return SingleMarkerWidget;
}

.h

UPROPERTY()
	TSubclassOf<USingleMarker> SingleMarkerClass;

UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<USingleMarker*> ScreenMarkers;

UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<USingleMarker*> CompassMarkers;