Aliasing occurs when two variable points to the same location in memory, like
int a = 12; int ptr = &a;
Strict aliasing is the assumption from the compiler that pointers won’t alias to a different type object. This allows the compiler to generate more efficiente code. For example:
uint32_t a = 0xFFFF; uint16_t ptr = &a;
Altough it will compile, there’s no guarantee that ptr will work.