Is "Out of Memory" a recoverable error?
Steven Schveighoffer
schveiguy at yahoo.com
Tue Dec 2 07:32:20 PST 2008
"Walter Bright" wrote
>I asked this over on stackoverflow.com to see what people using other
>languages have to say, as well as the D community. The reason I ask is to
>see if memory allocation can be allowed in functions marked "nothrow".
>
> http://stackoverflow.com/questions/333736/is-out-of-memory-a-recoverable-error
It can be. For example, if you want to allocate a gigantic buffer to see if
you can load a file, you may catch for failure, and display an appropriate
message to the user on failure. The application could still continue to
run. I think the difference between recoverable and non-recoverable is the
size of the allocation. If the size is sufficiently large enough, you can
still have memory to deal with the failure. If allocating 16 bytes gives
you a failure, then may not be able to do much to get around it.
In most cases, an out of memory failure is a non-recoverable error. My
thoughts are, add a recoverable allocate function to the GC. If one wants a
recoverable memory error, he must call that function to allocate. Don't
allow that function in nothrow functions, but allow standard (non
recoverable) memory allocation to be called.
-Steve
More information about the Digitalmars-d
mailing list