1. When we use a smart pointer, the smart pointer class ensures that memory is freed when it is no longer needed even if the block is exited prematurely due to an exception. In contrast, memory that we manage directly is not automatically freed when an exception occurs. If we use built-in pointers to manage memory and an exception occurs after a new but before the corresponding delete, then the memory won't be freed.
Sowhen MCU reset(not power on reset), the memory allocated by function malloc() won't be freed.
2.Lvalue and Rvalue
Generally speaking, an lvalue expression refers to an object's identity, whereas an rvalue expression refers to an object's value.
3.Put inline and constexpr functions in Header Files
Unlike other functions, inline and constexpr functions may be defined multiple times in the program. After all, the compiler needs the definition, not just the declaration, in order to expand the code. However, all of the definitions of a given inline or constexpr must match exactly. As a result, inline and constexpr functions normally are defined in headers.