Le 2010-08-22 à 17:07, Walter Bright a écrit :

> Sean Kelly wrote:
>> I think it depends on how the compiler dereferences fields of an object. GCC 
>> on OSX if I have a null ptr to a struct and I try to access a field through 
>> it I'll get the data at 0x4 or wherever and the code will keep on running.  
>> Actual segfaults happen depressingly rarely. 
> 
> On Windows, the entire first 64K of address space is reserved by the OS, and 
> any attempt to access it results in a seg fault. I'm very surprised that OS X 
> would not do the same.

A quick test with DMD on OS X reveals that reading anything below the first 4K 
of the address space causes a segfault.

For instance, reading member b of a null pointer to this struct will not cause 
a segfault:

        struct S {
                ubyte[4*1024] a;
                ubyte b;
        }

        S* s = null;
        ubyte c;

        @safe void main() { 
                c = s.b;
        }

Remove one byte from array a and you have a segfault.

-- 
Michel Fortin
[email protected]
http://michelf.com/



_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to