Calling function on dereferenced heap pointer results in error

I have a class initializer definition

UIController(IScreen* left, IScreen* right, Encoder& encoder);

An initializer

UIController UI_CONTROLLER(
new ScreenStandby(LCD_1),
new ScreenStandby(LCD_2),
ENCODER
);

and a method

void UIController::init() {
this->left->onEnter(); // This line hard faults without ever calling into onEnter.
}

When I call UI_CONTROLLER.init() and it tries to dereference the heap pointer and call a function on it a hard fault results… any ideas on why this is happening?

I know it’s not a direct answer, but I had some similar issues in a project I was working on, and never managed to get to the bottom of it. I ended up just making my entire driver layer a set of global static objects in main.cpp, could you use this approach for your project, or do the LCD objects need to be allocated like that?