On 14/07/2016 6:23 PM, Gorge Jingale wrote:
I'm pretty confused why the following code doesn't work as expected.

GetValue is a struct.

  auto value = GetValue();
  memcpy(&value, &val, Val.sizeof);

But if I plug in value direct to memset it works!!

  memcpy(&GetValue(), &val, Val.sizeof);

GetValue returns memory to stick a value in and the memcpy is copying it
over. It is very confusing logic. Should I not expect the two cases two
be identical?

I think that the assignment in the first case is not assigning the
reference returned by auto ref GetValue().

I am expecting it to work like a pointer,

  void* value = &GetValue();
  memcpy(value, &val, Val.sizeof);

so to speak but it works more like

    S value;
    value = GetValue();
    memcpy(&value, &val, Val.sizeof);

which copies the data to the memory created for value and not the one
returned by GetValue.

Please provide the definitions of GetValue and Val.

Reply via email to