I assume BuildingManager is a member variable inside your PlayerController?
If it’s a raw pointer (ABuildingManager* BuildingManager) make sure it’s marked as UPROPERTY(), otherwise it will be garbage collected.
Secondly, I would suggest you use the SpawnActor-function instead of NewObject.
Although I’m successfully able to use NewObject on actors on my end without any crash, I’ve personally never done it.
Try replacing the NewObject call with
if( UWorld* World = GetWorld() )
{
BuildingManager = World->SpawnActor<ABuildingManager>( ABuildingManager::StaticClass, FTransform::Identity );
}