@safe @nogc memory allocation

Dicebot via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed May 28 14:13:37 PDT 2014


On Wednesday, 28 May 2014 at 21:09:26 UTC, bearophile wrote:
> Dicebot:
>
>> It is also because `malloc` can return null when out of memory 
>> and `new` will throw an Error. Wrapper around `malloc` that 
>> throws `OutOfMemoryError` on null can be considered of same 
>> purity class as `new`.
>
> One wrapper should have a template argument to specify the type 
> of the items, to avoid the need of a cast. And instead of 
> throwing an error it could also return a Nullable (the sizeof 
> of such Nullable is the same as a pointer).
>
> Nullable!(Titem*, null) talloc(Titem)(in size_t nItems);
>
> Bye,
> bearophile

I don't think wrapper with Nullable can be pure as it will 
possibly return two different object values (and not just 
different pointers) when called with same argument list. Throwing 
an Error is crucial here.


More information about the Digitalmars-d-learn mailing list