¿Cómo comparar punteros C?

Recientemente, escribí un código para comparar punteros como este:

if(p1+len < p2)

sin embargo, algunos miembros del personal dijeron que debería escribir así:

if(p2-p1 > len)

para estar seguro. Aquí,p1 yp2 sonchar * punteroslen es un entero No tengo idea de eso. ¿Es eso correcto?

EDIT1: por supuesto,p1 yp2 puntero al mismo objeto de memoria en la mendicidad.

EDIT2: Hace un minuto, encontré elbogo de esta pregunta en mi código (sobre 3K líneas), porquelen es tan grande quep1+len no se puede almacenar en 4 bytes de puntero, por lo quep1 + len <p2 escierto.Pero no debería, de hecho, creo que deberíamos comparar punteros como este enalguna situacion:

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

Respuestas a la pregunta(5)

Su respuesta a la pregunta