Engine crash when trying to add value to array of struct

the Engine crash when I try to add value to array of struct here is my code;

bool USteamFriendsFunctionLibrary::DoesSaveGameExistInUserCloud(TArray<FCloudFilesHeader> &FileHeader)
{
	IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get();
	TArray<FCloudFileHeader> FilesHeader;
	FCloudFileHeader Files;

	if (OnlineSub)
	{
		IOnlineUserCloudPtr UserCloud = OnlineSub->GetUserCloudInterface();


		if (UserCloud.IsValid())
		{
			UserCloud->GetUserFileList(*UniqueNetId, FilesHeader);
			
			if(FilesHeader.Num() > 0)
			{
				for (int i = 0; i < FilesHeader.Num(); i++)
				{
					FileHeader[i].FileName = FilesHeader[i].FileName; // <----------- Crash Here

					if (Files.FileName == saveName)
					{
						GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("FileFound!"));
						return true;
					}
				}
			}
			else
			{
				GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("FileArray = 0"));
				return false;
			}
		}
		else
		{
			return false;
		}
	}
	return false;
}

The problem is that you are trying to set the value FileName on en element in FileHeader TArray that doesn’t exist yet. You probably want to add a new FCloudFilesHeader to FileHeader, possibly via EmplaceAt or Insert, for example:

FileHeader.EmplaceAt(i, <FCloudFilesHeader constructor arguments>);
FileHeader[i].FileName = FilesHeader[i].FileName;

You probably don’t need the second line if the FCloudFilesHeader constructor also passes the FileName.

I created a constructor in my struct like this;

FCloudFilesHeader() { }

and I did like you said ;

FileHeader.EmplaceAt(i, FCloudFilesHeader());
					FileHeader[i].FileName = FilesHeader[i].FileName;
					FileHeader[i].DLName = FilesHeader[i].DLName;
					FileHeader[i].Hash = FilesHeader[i].Hash;
					FileHeader[i].HashType = FilesHeader[i].HashType;
					FileHeader[i].URL = FilesHeader[i].URL;
					FileHeader[i].FileSize = FilesHeader[i].FileSize;

Now it work as it should… no more crash!
Thanks a lot for your help!