Pointer Arithmetic Scaling Fallacy
Assuming pointer arithmetic adds raw bytes, so adding 2 to an int* moves forward 2 bytes instead of 2 * sizeof(int) bytes.
C compilers automatically multiply pointer arithmetic additions by the size of the referenced type (sizeof(T)).
int *p = arr;
// Adding byte count manually overshoots by 4x!
int *bad = p + (2 * sizeof(int));int *p = arr;
// Compiler auto-scales: moves forward exactly 2 integer elements
int *good = p + 2;