Вот что написано в стандарте С++ 2011
15.2.2
An object of any storage duration whose initialization or destruction is
terminated by an exception will have
destructors executed for all of its
fully constructed subobjects
(excluding the variant members of a
union-like class), that is, for
subobjects for which the principal
constructor (12.6.2) has completed
execution and the destructor has not
yet begun execution. Similarly, if the
non-delegating constructor for an
object has completed execution and a
delegating constructor for that object
exits with an exception, the object’s
destructor will be invoked. If the
object was allocated in a
new-expression, the matching
deallocation function (3.7.4.2, 5.3.4,
12.5), if any, is called to free the storage occupied by the object.
В общем, если конструктор был прерван исключением, то вызываются деструкторы всех уже созданных объектов, а динамическая память, выделенная под основной класс, будет освобождена соответствующим delete.
Итого, утечки не будет, в том числе и при наличии базового класса, если, конечно, нет внутренних утечек памяти.