On Thursday, 12 February 2015 at 23:27:51 UTC, Kitt wrote:
The Exception obviously uses the GC, and would need to be
replaced with a printf or something; however, emplace doesn't
have a @nogc replacement that I know of. What I'd like to know,
from people much more knowledgeable about the ins and outs of
D, is what the "Best" or "Correct" way to allocate and
deallocate within @nogc sections?
This issue, as well as
PS: Tangentially related, what hashing algorithm does D use?
I've seen people suggest using typeid(object).toHash(&object);
however, toHash isn't @nogc, so I need to write my own Hashing
function. For the sake of consistency and peace of mind, I'd
really like to match mine as closely to Ds internal one as
possible.
this one, are related to the loss of guarantee attributes when
using TypeInfo methods, most recently discussed in this
thread[1]. It is essentially a bug, and a work in progress.
The correct way to handle OOM in D is to call
core.exception.onOutOfMemoryError:
---
if (auto p = malloc(...))
/* use p */
else
onOutOfMemoryError(); // Throws OutOfMemoryError without
allocating memory
---
[1]
http://forum.dlang.org/post/krccldftrbbczahas...@forum.dlang.org