Is this defined behaviour in D?

John Burton john.burton at jbmail.com
Mon Sep 25 13:06:56 UTC 2017


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.


More information about the Digitalmars-d-learn mailing list