I have difficulty in understanding the following paragraph quoted from [cppreference](https://en.cppreference.com/w/cpp/language/default_constructor#Trivial_default_constructor) about trivial default constructor. I have searched stackoverflow but still didn't get a clear answer. So please help.

> 
> A trivial default constructor is a constructor that performs no action. All data types compatible with the C language (POD types) are trivially default-constructible. Unlike in C, however, objects with trivial default constructors cannot be created by simply reinterpreting suitably aligned storage, such as memory allocated with std::malloc: placement-new is required to formally introduce a new object and avoid potential undefined behavior.
> 
> 
> 

Specifically, if the trivial default constructor does nothing, why cannot we reinterpret the storage and pretend there is an object with the given type? Could you please provide some examples for the *potential undefined behavior* that this would cause?