I see the following constructs:
new X will free the memory if X constructor throws.
new X
X
operator new() can be
operator new()
When a constructor throws an exception the matching delete is called. The destructor is not called for the class that threw but any components of the class that have successfully had their constructors called will have their destructors called.