Как сравнить 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)