Question: What it wrong with this function:
F1(...){
x = new();
F2();
delete x;
}

Solution: F2() has to assume that x has been newed i.e F1() has been called. This results in dependency of F2() on F1(). The design is flawed. If F1 throws an exception, F2 may not be called & memory for x cannot be reclaimed as long as the program is running.