runtime hook for Crash on Error

Jonathan M Davis jmdavisProg at gmx.com
Wed Jun 6 02:38:14 PDT 2012


On Wednesday, June 06, 2012 11:13:39 Lars T. Kyllingstad wrote:
> On Friday, 1 June 2012 at 12:29:27 UTC, Steven Schveighoffer
> 
> wrote:
> > On Fri, 01 Jun 2012 04:48:27 -0400, Dmitry Olshansky
> > 
> > <dmitry.olsh at gmail.com> wrote:
> >> I don't agree that OutOfMemory is critical:
> >> 	--> make it an exception ?
> > 
> > No.  What we need is a non-throwing version of malloc that
> > returns NULL.  (throwing version can wrap this).  If you want
> > to throw an exception, then throw it there (or use enforce).
> 
> With some sugar:
> 
>      auto a = nothrow new Foo; // Returns null on OOM
> 
> Then, ordinary new can be disallowed in nothrow code.

But then instead of getting a nice, clear, OutOfMemoryError, you get a 
segfault - and that's assuming that it gets dereferenced anywhere near where 
it's allocated. I'd hate to see regular new not be allowed in nothrow 
functions. Having a way to allocate and return null on failure would definitely 
be a good feature for those trying to handle running out of memory, but for 
99.9999999% of programs, it's just better to throw the Error thereby killing 
the program and making it clear what happened.

- Jonathan M Davis


More information about the Digitalmars-d mailing list