I am struggling to understand exactly what is happening when you return a new object from a function in go.
I have this
func createPointerToInt() *int {
i := new(int)
fmt.Println(&i);
return i;
}
func main() {
i := createPointerToInt();
fmt.Println(&i);
}
The values printed returned are
0x1040a128
0x1040a120
I would expect these two values to be the same. I do not understand why there is an 8 byte difference.
In what I see as the equivalent C code:
int* createPointerToInt() {
int* i = new int;
printf("%#08x
", i);
return i;
}
int main() {
int* r = createPointerToInt();
printf("%#08x
", r);
return 0;
}
The address returned is the same:
0x8218008
0x8218008
Am I missing something blindingly obvious here? Any clarification would be greatly appreciated!