Unable to use TArray->GetData() directly in RHIUpdateTexture2D()

Hey guys, I have been trying to solve this problem of reading pixels and updating them to a texture using RHIUpdateTexture2D( ) efficiently since last 2 months. my current code:

TArray<FColor> PixelArray;
Something->ReadPixels(PixelArray);
UpdateTextureRegions(SomeTexture2d, (int32)0, (uint32)1, VideoUpdateTextureRegion, (uint32)(sizeof(FColor) * BufferResolution.X), (uint32)sizeof(FColor), (uint8*)PixelArray.GetData(), false)
UpdateTextureRegions(UTexture2D* Texture, int32 MipIndex, uint32 NumRegions, FUpdateTextureRegion2D* Regions, uint32 SrcPitch, uint32 SrcBpp, uint8* SrcData, bool bFreeData)
{
	//if (1) { return; }
	if (Texture->GetResource() && SrcData)
	{
		if (GEngine) // Check if GEngine is available
		{


			// Display the length on screen with a unique key, a duration, and a color
			GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT("Readingframe")));
		}

		struct FUpdateTextureRegionsData
		{
			FTexture2DResource* Texture2DResource;
			int32 MipIndex;
			uint32 NumRegions;
			FUpdateTextureRegion2D* Regions;
			uint32 SrcPitch;
			uint32 SrcBpp;
			uint8* SrcData;
		};

		FUpdateTextureRegionsData* RegionData = new FUpdateTextureRegionsData;

		RegionData->Texture2DResource = (FTexture2DResource*)Texture->GetResource();
		RegionData->MipIndex = MipIndex;
		RegionData->NumRegions = NumRegions;
		RegionData->Regions = Regions;
		RegionData->SrcPitch = SrcPitch;
		RegionData->SrcBpp = SrcBpp;
		RegionData->SrcData = SrcData;
		//RegionData->Regions[0].

		ENQUEUE_RENDER_COMMAND(UpdateTextureRegionsData)(
			[RegionData, bFreeData, Texture](FRHICommandListImmediate& RHICmdList)
			{
				for (uint32 RegionIndex = 0; RegionIndex < RegionData->NumRegions; ++RegionIndex)
				{
					int32 CurrentFirstMip = Texture->FirstResourceMemMip;
					if (RegionData->MipIndex >= CurrentFirstMip)
					{
						RHIUpdateTexture2D(
							Texture->GetResource()->GetTexture2DRHI(),
							RegionData->MipIndex - CurrentFirstMip,
							RegionData->Regions[RegionIndex],
							RegionData->SrcPitch,
							RegionData->SrcData
							 + RegionData->Regions[RegionIndex].SrcY * RegionData->SrcPitch
							+ RegionData->Regions[RegionIndex].SrcX * RegionData->SrcBpp
						);
					}
				}
				if (bFreeData) {
					FMemory::Free(RegionData->Regions);
					FMemory::Free(RegionData->SrcData);
				}
				delete RegionData;
			});
	}

Now the issue I am facing is whenever I directly use PixelArray in UpdateTextureRegions() just like above example, my game crashes. Only workaround to this problem I was able to find was to use a For loop and assign individual variable of PixelArray to a new FColor array and using it in the UpdateTextureRegions() function. All this leads to huge performance loss. Is there any way to directly use PixelArray in the UpdateTextureRegions() without crashing?