Как сравнить C указатели?

Недавно я написал код для сравнения таких указателей:

if(p1+len < p2)

однако некоторые сотрудники сказали, что я должен написать так:

if(p2-p1 > len)

быть в безопасности. Вот,p1 а такжеp2 находятсяchar * указатели,Len является целым числом Я понятия не имею об этом. Это правильно?

EDIT1: конечно,p1 а такжеp2 указатель на тот же объект памяти в начале.

EDIT2: только минуту назад я нашелБого этого вопроса в моем коде (около 3K строк), потому чтоlen настолько велика, чтоp1+len не может хранить в 4 байтах указателя, поэтомуp1 + len <p2 являетсяправда.Но это не должно быть на самом деле, поэтому я думаю, что мы должны сравнить указатели, как это внекоторая ситуация:

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

Ответы на вопрос(5)

Ваш ответ на вопрос