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();

Reply via email to