On Monday, 22 January 2018 at 23:30:16 UTC, Aedt wrote:
I was asked in Reddit
(https://www.reddit.com/r/learnprogramming/comments/7ru82l/i_was_thinking_of_using_d_haxe_or_another/) how would D handle the following similar D code. I'm surprised that both dmd and ldc provides no warnings even with -w argument passed.
import std.stdio;
void main()
{
string foo = "foo";
string* p1, p2;
string*[] ls;
ls ~= &foo;
p1 = ls[0];
ls.destroy();
p2 = ls[0];
writeln(p2);
}
D is not memory safe by default (unfortunately), so it's not
surprising to me that you can do this in `@system` code. I would
be surprised if the compiler allowed you to do something like
this in `@safe` code. To make your programs memory safe, you
should add `@safe` to your `main` function.
Mike