union/toString: crash/segfault: What's happening here?
Nicholas Wilson
iamthewilsonator at hotmail.com
Fri Jan 12 01:45:37 UTC 2018
On Friday, 12 January 2018 at 00:54:03 UTC, kdevel wrote:
> crash.d
> ```
> import std.stdio;
>
> union U {
> float f;
> int i;
> string toString ()
> {
> string s;
> return s;
> }
> }
>
> void main ()
> {
> U u;
> writeln (u);
> }
> ```
>
> $ dmd crash.d
> $ ./crash
>
because you don't initialise `s` in
> string toString ()
> {
> string s;
> return s;
> }
so it defaults to `string s = null;` thus giving a segfault.
try `string s = "";` instead.
More information about the Digitalmars-d-learn
mailing list