Not Always That Obvious void function(int a, int b, int c) { char buffer1[8]; char buffer2[16]; int *ret; ret = buffer1 + GAP_TO_RETURN_ADDRESS_ON_STACK; (*ret) += WIDTH_OF_ONE_INSTRUCTION; } void main() { int x; x = 0; function(1,2,3); x = 1; printf("%d\n",x); }