So that's how it was, and the code base was littered with lots of little checks on what new expressions were returning, things like:
int *p = new int[1024];
if (!p) return SOME_ERROR;
doSomething(*p);
Of course, the C++ standard says that operator new will never return null (it's supposed to throw if it fails). So the compiler sees this code and says "hey, that if (!p) check isn't necessary.." and so none of those little checks gets emitted. Sure enough, it happens that the operator new returns null now and then because everyone is on a tight memory budget, but instead of catching it and returning an error, the code just goes on to crash.