Я всегда задавался вопросом: не означает ли ptrdiff_t
удержать разницу в двух указателях по определению? Как это происходит, когда два указателя слишком далеко? (Я не указываю на какой-либо конкретный язык... Я имею в виду все языки, которые имеют этот тип.)
(например, вычтите указатель с адресом 1
из указателя байта с адресом 0xFFFFFFFF
, когда у вас есть 32-битные указатели, и он переполнит бит знака...)