xxxxxxxxxx
import core.stdc.stdlib;
import std.stdio;
struct S
{
void* buf;
size_t rc = 1;
this(int n)
{
buf = malloc(n);
}
this(this)
{
"this(this): (rc=%d)".writefln(rc);
rc++;
}
~this()
{
"~this: (rc=%d)".writefln(rc);
if (!--rc)
{
free(buf);
buf = null;
"~this: freeing".writeln;
}
}
}
void foo(S s)
{
printf("buf: %s\n", s.buf);
}
void main()
{
auto s = S(10);
(cast(char*) s.buf)[0 .. 3] = "hi\0";
foo(s);
"end.main".writeln;
}