Are null refs intentionally allowed?

Paul Backus snarwin at gmail.com
Sat Jul 16 12:45:16 UTC 2022


On Saturday, 16 July 2022 at 12:33:57 UTC, Dukc wrote:
> This compiles and runs just fine, printing what you'd except:
>
> ```D
> @safe void main()
> {
>     import std.stdio;
>
>     int* p;
>     isNull(*p).writeln;
>     p = new int(5);
>     isNull(*p).writeln;
> }
>
> @safe bool isNull(ref int x){return &x is null;}
> ```
>
> The question is, is this intentional? I'm writing "DIP1000: 
> Memory Safety in a Modern System Programming Language Pt. 2" 
> and currently I've written that this is allowed, even when it's 
> not in C++.

In general, dereferencing `null` has defined behavior and is 
allowed in `@safe` code. So I think this example is fine.


More information about the Digitalmars-d mailing list