Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Cross-compiler way to handle memory allocation failure ? (http://www.velocityreviews.com/forums/t267654-cross-compiler-way-to-handle-memory-allocation-failure.html)

Koen 06-24-2003 12:35 PM

Cross-compiler way to handle memory allocation failure ?
 
Hi!
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



Michiel Salters 06-25-2003 10:50 AM

Re: Cross-compiler way to handle memory allocation failure ?
 
"Koen" <no@ssppaamm.com> wrote in message news:<bd9ftc$lvf$1@gaudi2.UGent.be>...
> Hi!
> 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++.


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.

> 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?


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.

Regards,
--
Michiel Salters


All times are GMT. The time now is 05:12 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.