When the lifetime of an object cannot be correctly described by a lexical scope, the object must be allocated dynamically. I agree with your basic sentiment, which is to avoid dynamic allocation whenever possible and feasible, but it isn't always possible or feasible.