Michel Fortin wrote:
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.
That's a lot better than just 4 bytes, but it's still mysterious why
they don't do the full 64K.
|
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos