Cross-compiler way to handle memory allocation failure ?

Discussion in 'C++' started by Koen, Jun 24, 2003.

  1. Koen

    Koen Guest

    What is the method you use to handle memory allocation failure in C++
    using the "new" operator?
    I used to only check if a NULL pointer is returned after the "new" call,
    but that's probably only working in MSVC++.
    I also read about the "bad_alloc" exception, but that doesn't seem to be
    thrown by MSVC++.
    Now, one could of course say "don't use MSVC++", but I'd rather like to
    hear a good solution for being able to handle memory allocation failure
    in a cross-compiler way (we're using MSVC++ on windows and gcc on
    linux). Any ideas anyone?
    Is installing a new handler the only way to be sure?
    Koen, Jun 24, 2003
    1. Advertisements

  2. Not in the last two versions. You have to go back to the 6.0 series,
    which predates the standard. Both VC7.0 and VC7.1 get it right.
    I believe installing a new handler is also buggy on VC6. Upgrading from
    VC6 to VC7 is relatively painless; i've done it on more than one project.
    As others mentioned, new(nothrow) is an option.

    For windows, this often is a bit of a non-issue though. Windows will
    swap to death before failing, the user will probably kill off the
    program first. The only case I know that fails fast enough to matter is
    running into the 2Gb limit, if your PC has more than 2Gb RAM. I don't
    know if that's implemented properly in VC6, though.

    Michiel Salters, Jun 25, 2003
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.