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)