What's the correct way to use/initialize UObjects?

Same as you:



this->QuadTree = NewObject<UDynCubeQuadTree>();


I am doing this at runtime (BeginPlay) and also inside the Editor by overriding the [PostEditChangeProperty] method.

I think that you are going to have to do some C++ debugging to find the cause(s), Unless someone else has more info.

I also recommend checking the values of the pointers, Atleast after you are trying to create the objects.
I think you are going to have to attach the debuger to the Editor and set some breakpoints in the [NewObject] function.
You can use this before



#pragma optimize( "", off )


and after the function



#pragma optimize( "", on )


to disabe optimization of the method.

HTH