On Thursday, 21 April 2022 at 06:57:41 UTC, drug wrote:
On 21.04.2022 08:49, Alain De Vos wrote:
Following program:
```
import std.stdio;
void main() @trusted
{
int *p=null;
void myfun(){
int x=2;
p=&x;
writeln(p);
writeln(x);
}
myfun();
*p=16;
writeln(p);
writeln(*p);
}
```
outputs :
7FFFFFFFDFAC
2
7FFFFFFFDFAC
32767
I don't understand why. Would it be possible to explain ?
Like others have said `writeln` overwrites the memory. You can
check it by commenting `writeln(p);` out - then you get:
```d
7FFF23725D1C
2
16
```
No error was thrown during execution.
Should an error be thrown or is this optional by the operating
system ?
How can i force an error to be thrown when doing something "bad" ?