Dynamic memory allocation - how is it supported?

The linked video does not refer to the Arduino 'String' class but rather the C++ std::string class that you cited:

They are not the same thing.