If "new" has failed to allocate memory the exception std::bad_alloc() is thrown and doesn't return NULL ptr with VC6+ compilers. With std::nothrow it will return NULL.