Disallow null references in safe code?
Jonathan M Davis
jmdavisProg at gmx.com
Mon Feb 3 21:09:21 PST 2014
On Monday, February 03, 2014 22:23:51 Meta wrote:
> On Monday, 3 February 2014 at 22:18:35 UTC, Jonathan M Davis
>
> wrote:
> > For it to know, it would have to examine the body of foo (which
> > it doesn't
> > necessarily have the code for under C's compilation model -
> > which D uses), and
> > even if it did that wouldn't be enough e.g.
> >
> > int* foo()
> > {
> >
> > return "/etc/foo".exists ? new int : null;
> >
> > }
> >
> > The compiler could flag that as _possibly_ returning null and
> > therefore the
> > previous code _possibly_ dereferencing null, but it can't know
> > for sure.
>
> If null is an invalid value to assign to a pointer, then there's
> no issue.
Yes, but I wasn't talking about non-nullable pointers. I was talking about how
in the general case, it's impossible to determine at compile time whether a
nullable pointer is null and that it's therefore impossible (in the general
case) to determine at compile time whether dereferencing a nullable pointer
will attempt to dereference null. Non-nullable pointers side-steps the issue
entirely.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list