On Thu, 15 May 2014 07:52:20 -0400, Manu via Digitalmars-d <digitalmars-d@puremagic.com> wrote:

On 15 May 2014 10:50, Walter Bright via Digitalmars-d
<digitalmars-d@puremagic.com> wrote:
On 5/14/2014 5:03 PM, Meta wrote:

Allocating memory through new and malloc should always be pure, I think,
because
failure either returns null in malloc's case,


malloc cannot be pure if, with the same arguments, it returns null sometimes
and not other times.

Even if it doesn't fail, malloc called with identical arguments still
returns a different result every time.
You can't factor malloc outside a loop and cache the result because
it's being called repeatedly with the same argument like you're
supposed to be able to do with any other pure function.
You shouldn't be able to do that with gcalloc either... how can gcalloc be pure?

That only applies to strong-pure functions. malloc would be weak-pure, since it returns a mutable pointer.

-Steve

Reply via email to