[Gc] Resubmitted: Patch that adds throw of std::bad_alloc for GC'd operator new.

Talbot, George Gtalbot at locuspharma.com
Fri May 29 05:32:05 PDT 2009


Hi,

(resubmitted as unified diff (-ruN) using "cvs diff -ruN", as an attachment instead of inline in the email)

For my C++ app, I needed to be able to detect out of memory in a way that
follows the standard somewhat, in that operator new should throw
std::bad_alloc if it fails.  This patch accomplishes this by adding "throw
(std::bad_alloc)" to the existing declarations of operator new, and
declaring a second version that takes const nothrow_t as a parameter and
catches the exception if allocation fails (and returns zero in that case).

To enable the throwing behavior, I added a class at the top of the file,
gc_cpp_init, that initializes the GC and installs an out-of-memory handler
that calls the existing C++ new handler, if installed, or throws
std::bad_alloc().

Also adds placement options for ignore-off-page, which I needed when
allocating some large I/O caches in my app.

Let me know if this works for you.

Tested on Linux x86_64, gcc 4.1.3

--
George T. Talbot
<gtalbot at locuspharma.com>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: gc_cpp_h.patch
Type: application/octet-stream
Size: 10026 bytes
Desc: gc_cpp_h.patch
Url : http://napali.hpl.hp.com/pipermail/gc/attachments/20090529/ad240a9c/gc_cpp_h.obj


More information about the Gc mailing list