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

Reply via email to