Jak porównać wskaźniki C?

Niedawno napisałem kod, aby porównać takie wskaźniki:

if(p1+len < p2)

jednak niektórzy pracownicy powiedzieli, że powinienem napisać tak:

if(p2-p1 > len)

być bezpiecznym. Tutaj,p1 ip2 sąchar * wskazówki,len jest liczbą całkowitą. Nie mam o tym pojęcia. Czy to prawda?

EDIT1: oczywiściep1 ip2 wskaźnik na ten sam obiekt pamięci na początku.

EDIT2 : zaledwie jedną minutę temu znalazłembogo tego pytania w moim kodzie (około 3K linii), ponieważlen jest taki dużyp1+len nie można zapisać w 4 bajtach wskaźnika, więcp1 + len <p2 jestprawdziwe.Ale nie powinno tak być, więc myślę, że powinniśmy porównać takie wskaźnikijakaś sytuacja:

if(p2 < p1 || (uint32_t)p2-p1 > (uint32_t)len)

questionAnswers(5)

yourAnswerToTheQuestion