On 9/25/17 9:06 AM, John Burton wrote:
If I have a int* pointer for example, that points to the start of an int
array and step through the array until I get the value 123, is it
defined in D what happens if you step off the end of the array?
What I might expect to happen is for the code to just keep stepping
through sequential memory locations until it finds one that happens to
have a 123 in it, until it gets a memory protection fault of some kind,
or failing that wrap around memory and go into an infinite loop.
The options are really
1) I can rely on the compiler consistently doing what I'd "expect" on a
specific platform.
2) There is some other defined behaviour
3) The compiler can do whatever crazy thing it feels like as this is
considered broken code.
I'm not for a moment suggesting this is a good idea, but what I'm really
asking is does the D language say anything about this? C++ seems to have
chosen (3). Personally I'd prefer (1) but it's most to know if the
"standard" such as it is has anything to say on such matters.
I would tend to guess 3, but I don't know if the compiler has the
capability to reason about it, so the current behavior might be what you
expect. I wouldn't count on it though...
-Steve