// Clause: 7.22.3.3 — Only the pointer value returned by the allocation function may be passed to free; otherwise UB.
#include <stdlib.h>
int main(void){
    int *p = malloc(16);
    if(!p) return 0;
    int *q = p+1;
    free(q); // UB
    return 0;
}
