Post

(C) the end of the address space check

1
2
if (\_\_builtin\_expect ((uintptr\_t) p > (uintptr\_t) -size, 0)

* size is p’s size

type(x) = uintptr\_t일 때, x + ~x = uintptr\_t's MAX (111...11) 이므로 p + x = MAX이면 c p = ~x다.

-x = ~x + 1이므로 p = -x - 1이다. * 이를 대입하면 x -x -1 = MAX가 나오는데, 보통 int(-1) = uintptr\_t's MAX (111....11)임을 생각해보면 된다.

따라서 p = -x -1이면 p + x = uintptr\_t's MAX다. x + 1 = t로 치환하면, p = -t이면 p + t = uintptr\_t's MAX + 1이므로

결과적으로, p > -x이면 p + x > uintptr\_t's MAX + 1이 된다.

This post is licensed under CC BY 4.0 by the author.