stack frame & dangling pointer weirdness

drug drug2004 at bk.ru
Thu Apr 21 06:57:41 UTC 2022


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
```


More information about the Digitalmars-d-learn mailing list