dereferencing null
Peter Alexander
peter.alexander.au at gmail.com
Fri Mar 2 01:22:26 PST 2012
On Friday, 2 March 2012 at 04:53:02 UTC, Jonathan M Davis wrote:
> 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.
False.
-----------------------
import std.stdio;
class Foo
{
final void bar()
{
writeln("I'm null!");
}
}
void main()
{
Foo foo;
foo.bar();
}
-----------------------
% dmd test.d -O -release -inline
% ./test
I'm null!
%
-----------------------
You only get an error if there is a memory access involved
(vtable, member data etc.)
More information about the Digitalmars-d
mailing list