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.