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.