Pl confirm if following statements are true.

1. When exception is thrown and not caught, destructor is called during stack undwinding.
2. When exception is thrown , destructor is called.
3. When exception is thrown and not caught, first unexpected() method is called.If set_unexpected is not set then, terminate method is called which calls abort method if method set_terminate() is not set.
4. stack unwinding involves releasing memory allocated on heap as well as memory allocated on stact for variables like int a.

Please explain if above 4 statements or any of the statement is not correct. verify..thanks in advance.