C++ & Blueprint mix - how to correctly handle C++ output ustruct parameters?

Hello, I have a UActorComponent with this function:

void UMyOutputGenerator::Generate(
	FMyInputStruct const& input,
	int someParameter,
	FMyOutputStruct& output)
{
	UE_LOG(LogTemp, Warning, TEXT("output address '0x%llx'"), &output);
    ....

UE_LOG(LogTemp, Warning, TEXT("entries in array before %d"), output.array.Num());
    output.array.Add(/*some new object*/);
UE_LOG(LogTemp, Warning, TEXT("entries in array after %d"), output.array.Num());
}

FMyOutputStruct is more or less like this:

USTRUCT(BlueprintType)
struct PROJECT_API FMyOutputStruct
{
	GENERATED_BODY()
	
	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	USomeData const* data;

	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	USomeOtherData const* otherData;

	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	TArray<FSomeMyStruct> array;

	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	int someParameter;
};

Then I call Generate function in blueprint where FMyOutputStruct is correctly interpreted and displayed as output parameter, however, with each function call UE_LOG shows that output object has the same address each time.

Q1: Does UE create a single instance for output parameter when it’s a struct and then reuse it in each call? Does it assumes struct will be handled “by values” and to avoid allocations and thus does this?

This however leads to reuse the “array” and thus accumulating added objects with each call.
I mean “UE_LOG entries in array before” shows 0, then “UE_LOG entries in array after” shows 1 during first call but during the second call these values are 1 and 2 respectively. During thid 2 and 3 and so on…

Q2: When struct is an output parameter then do we have to ensure ourselfs to set/reset all fields in the struct because UE creates struct placeholder which it reuses later (like I’m asking in Q1) or am I doing something wrong?

BR