Why does nobody seem to think that `null` is a serious problem in D?
PacMan
jckj33 at gmail.com
Tue Dec 4 12:42:15 UTC 2018
On Monday, 19 November 2018 at 21:23:31 UTC, Jordi Gutiérrez
Hermoso wrote:
> When I was first playing with D, I managed to create a segfault
> by doing `SomeClass c;` and then trying do something with the
> object I thought I had default-created, by analogy with C++
> syntax. Seasoned D programmers will recognise that I did
> nothing of the sort and instead created c is null and my
> program ended up dereferencing a null pointer.
>
> I'm not the only one who has done this. I can't find it right
> now, but I've seen at least one person open a bug report
> because they misunderstood this as a bug in dmd.
>
> I have been told a couple of times that this isn't something
> that needs to be patched in the language, but I don't
> understand. It seems like a very easy way to generate a
> segfault (and not a NullPointerException or whatever).
>
> What's the reasoning for allowing this?
This is because you're transfering what you know from C++ to D,
directly. You shouldn't do that, check out how the specific
feature works in the particular language. I used C# mostly and
Foo f; wouldn't make sense for me, it's not allocated, ti's null.
So right away I used Foo f = new Foo();
More information about the Digitalmars-d-learn
mailing list