A question about postblit constructor

Ferhat Kurtulmuş aferust at gmail.com
Tue Nov 5 08:47:05 UTC 2019


I am trying to learn behavior of postblit constructor. Below code 
works as expected when I comment out malloc part of postblit 
constructor. It writes 4 if malloc part of postblit constructor 
is commented out. Otherwise it writes default init value of int 
which is 0. I wonder how new memory is allocated without an 
explicit malloc here. Sorry for this noob question in advance, I 
could not find any doc mentioning a similar case.

import std.stdio;
import core.stdc.stdlib;
import core.stdc.string;

struct S {
     int* vals;
     size_t length;

     this(this){
         //vals = cast(int*)malloc(length * S.sizeof);
         memcpy(vals, vals, length * S.sizeof);
         writeln("copied");
     }
}

void main()
{
     size_t len = 2;

     int* vals = cast(int*)malloc(len * S.sizeof);
     vals[0] = 4;
     vals[1] = 5;

     S s1 = S(vals, len);

     S s2 = s1;

     writeln(s2.vals[0]);

}


More information about the Digitalmars-d-learn mailing list