On Sat, Jun 19, 2021 at 11:10:14AM -0400, Dmitry Goncharov wrote: > On Sat, Jun 19, 2021 at 10:31 AM Dmitrii Pasechnik > <dima.pasech...@cs.ox.ac.uk> wrote: > > It's undefined behaviour in C to point to such a location, isn't it? > > Is this hack really needed? > > There is no hack. It is pointer arithmetic in c. p[-1] is the same as *(p-1).
Compiler does not guarantee you that doing something with p[-1] is not going to end in a segfault. It's hack, as it just happens to work, but YMMV. E.g. clang 10, or Apple's clang 12, will print a warning: warning: array index -1 is before the beginning of the array [-Warray-bounds] printf("%d", p[-1]); ^ ~~