dereferencing null

deadalnix deadalnix at gmail.com
Fri Mar 2 05:00:46 PST 2012


Le 02/03/2012 05:51, Jonathan M Davis a écrit :
> On Friday, March 02, 2012 05:37:46 Nathan M. Swan wrote:
>> Am I correct that trying to use an Object null results in
>> undefined behavior?
>>
>>       Object o = null;
>>       o.opCmp(new Object); // segmentation fault on my OSX machine
>>
>> This seems a bit non-D-ish to me, as other bugs like this throw
>> Errors (e.g. RangeError).
>>
>> It would be nice if it would throw a NullPointerError or
>> something like that, because I spent a long time trying to find a
>> bug that crashed the program before writeln-debugging statements
>> could be flushed.
>
> It's defined. The operating system protects you. You get a segfault on *nix and
> an access violation on Windows. Walter's take on it is that there is no point
> in checking for what the operating system is already checking for - especially
> when it adds additional overhead. Plenty of folks disagree, but that's the way
> it is.
>

The assertion that it has overhead isn't true.You'll find solutions 
without overhead (using libsigsegv in druntime for example).

BTW, object should be non nullable by default, if you ask me. The 
drawback of null is way bigger than any benefit.


More information about the Digitalmars-d mailing list