Wenn new keinen Speicher allokieren kann, wird 0 zurückgegeben. Dies muß abgefangen werden, und zwar IMMER!
Präprozessor-Makros wie
#define NEW(PTR,TYPE)\ (PTR) = new TYPE\ assert ((PTR) != 0)
helfen dabei nicht, da new verschiedene Formen haben kann:
new T; new T[size]; new T(arguments);
und durch Überladen neue Signaturen bekommen kann.