www.digitalmars.com         C & C++   DMDScript  

c++ - operator new() still returns NULL?!

reply "Matthew" <admin stlsoft.dot.dot.dot.dot.org> writes:
Is this correct? I've just been surprised to see that the following 
code produces "NULL returned", and not "bad_alloc"

    {
        try
        {
            char    *pch    =   new char[2000000000];

            if(NULL == pch)
            {
                fprintf(stderr, "NULL returned\n");
            }
        }
        catch(std::bad_alloc &)
        {
            fprintf(stderr, "bad_alloc\n");
        }
        catch(std::exception &x)
        {
            fprintf(stderr, "exception: %s\n", x.what());
        }
        catch(...)
        {
            fprintf(stderr, "exception of unknown type\n");
        }
    }


What gives?!

Matthew
Jul 03 2005
parent reply "Walter" <newshound digitalmars.com> writes:
"Matthew" <admin stlsoft.dot.dot.dot.dot.org> wrote in message
news:daad5l$2t23$1 digitaldaemon.com...
 Is this correct? I've just been surprised to see that the following
 code produces "NULL returned", and not "bad_alloc"

It still returns NULL, that's correct. It's that way to support older code, such as MFC. I know it'll eventually have to be fixed.
Jul 04 2005
parent "Matthew" <admin stlsoft.dot.dot.dot.dot.org> writes:
I've found a workaround, in that I've emulated the somewhat scary 
tactic of DMC++'s STLport that throws bad_alloc from std::allocator 
even though operator new() does not.

Still, it will have to be fixed. ;)

"Walter" <newshound digitalmars.com> wrote in message 
news:daaqqi$dpa$2 digitaldaemon.com...
 "Matthew" <admin stlsoft.dot.dot.dot.dot.org> wrote in message
 news:daad5l$2t23$1 digitaldaemon.com...
 Is this correct? I've just been surprised to see that the 
 following
 code produces "NULL returned", and not "bad_alloc"

It still returns NULL, that's correct. It's that way to support older code, such as MFC. I know it'll eventually have to be fixed.

Jul 04 2005