Thread overview
operator new() still returns NULL?!
Jul 04, 2005
Matthew
Jul 04, 2005
Walter
Jul 04, 2005
Matthew
July 04, 2005
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


July 04, 2005
"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.


July 04, 2005
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.
>
>