I know this issue has been discussed several times , but I could not find a post which explains why a copy needs to be made in case of a post-increment operation.
Quoting from a stackoverflow reply:
int j = i++; // j will contain i, i will be incremented.
int j = ++i; // i will be incremented, and j will contain i+1.
The difference is
someval++ returns what
someval is before the increment and to do that you need remember what
someval is with a copy. How else would you return the original value while updating it if the original value wasn't stored somewhere?