Spec#, nullables and more

Michel Fortin michel.fortin at michelf.com
Fri Nov 5 22:05:42 PDT 2010


On 2010-11-05 23:27:28 -0400, Walter Bright <newshound2 at digitalmars.com> said:

> Michel Fortin wrote:
>> There's nothing out of the array's bounds in this case. Here's what I meant:
>> 
>>     byte[66000]* arrayPtr = null;
>>     byte b = (*arrayPtr)[66000-1];
>> 
>> I'm in the array's bounds here, the problem is that I'm dereferencing a 
>> null pointer but the program will actually only read 65999 bytes 
>> further, outside of the 64 KB "safe" zone.
>> 
>> Should we limit static arrays to 64 KB too?
> 
> That's why pointer arithmetic (which is what this is) is disallowed in 
> safe mode.

Really? I'm doing two things in "(*arrayPtr)[66000-1]" in the above code:

1. Dereferencing a pointer to a the static array;
2. Accessing the last element within the bounds of the static array.

Which of these is disallowed in safe mode?

I think you should reread this example more attentively. It's no 
different than if you had put the static array as a member in a struct.

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d mailing list