Explanation of Object lifecycle and Access violation exception

I have this material:

I’m able to scroll this using a panner.

I’ve created a sprite actor that displays the material, and increase the scroll speed by 0.5 every 5 seconds.

This is the code:

DynamicCloudSpriteActor.h

#pragma once

#include "PaperSpriteActor.h"
#include "DynamicCloudSpriteActor.generated.h"


UCLASS()
class DYNAMICSKY_API ADynamicCloudSpriteActor : public APaperSpriteActor{
	GENERATED_BODY()

	public:
		ADynamicCloudSpriteActor();

	private:
		float deltaTimeBetweenCloudSpeedUpdate;
		float cloudSpeed;

		UPROPERTY(VisibleAnywhere, Category = SkyProperties)
		class UMaterialInstanceConstant* cloudMaterialPtr;
		UPROPERTY(VisibleAnywhere, Category = SkyProperties)
		class UPaperSprite* cloudSpritePtr;

		class UMaterialInstanceDynamic* dynamicCloudMaterialInstanceDynamic;

		virtual void Tick(float deltaTimeSeconds) override;
		void updateCloudSpeed();
};

DynamicCloudSpriteActor.cpp

#include "DynamicSky.h"
#include "DynamicCloudSpriteActor.h"
#include "Engine.h"

ADynamicCloudSpriteActor::ADynamicCloudSpriteActor() :
	  deltaTimeBetweenCloudSpeedUpdate(0)
	, cloudSpeed(0.3)
{

	PrimaryActorTick.bCanEverTick = true;
	
	cloudSpritePtr = ConstructorHelpers::FObjectFinderOptional<UPaperSprite>(TEXT("PaperSprite'/Game/2DSideScroller/Sprites/CloudSprite.CloudSprite'")).Get();

	cloudMaterialPtr = ConstructorHelpers::FObjectFinderOptional<UMaterialInstanceConstant>(TEXT("MaterialInstanceConstant'/Game/2DSideScroller/Materials/DynamicCloud_Inst.DynamicCloud_Inst'")).Get();
	
	dynamicCloudMaterialInstanceDynamic = UMaterialInstanceDynamic::Create(cloudMaterialPtr, GetRenderComponent());
	
	GetRenderComponent()->SetSprite(cloudSpritePtr);
	GetRenderComponent()->SetMaterial(0, dynamicCloudMaterialInstanceDynamic);
	
	updateCloudSpeed();
}

void ADynamicCloudSpriteActor::Tick(float deltaTimeSeconds){
	deltaTimeBetweenCloudSpeedUpdate+= deltaTimeSeconds;
	
	if (5 < deltaTimeBetweenCloudSpeedUpdate) {
		deltaTimeBetweenCloudSpeedUpdate= 0;
		cloudSpeed += .5;

		updateCloudSpeed();

		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::FString(TEXT("Speed of x axis: ")) + FString::SanitizeFloat(cloudSpeed));
	}
}

void ADynamicCloudSpriteActor::updateCloudSpeed() {
	dynamicCloudMaterialInstanceDynamic->SetScalarParameterValue(FName(TEXT("xSpeed")), cloudSpeed);
}

The problem is that when the method updateCloudSpeed is called from the constructor all works well, when occur a tick (sometime) I get Access violation exception. I know the problem is because the pointer become null, but I would to understand why.

What is the life cycle of the objects instantiated by these helper classes (UMaterialInstanceDynamic::Create AND ConstructorHelpers::FObjectFinderOptional) ?