Ponteiro de um byte-off ainda válido em C?

Posso estar enganado, mas me lembro que para uma determinada alocação de memória, por exemplo,

char *p = malloc(4);

o ponteirop é um ponteiro válido para todos os bytes dentro da alocaçãoe para o primeiro byte além dessa alocação.

Assim, para acessar a memória através do ponteirop apenas compensaçõesp[0] .. p[3] é válido. Mas para comparação de ponteiros&( p[4] ) também seria um ponteiro válido.

Isso está correto e em que local do padrão C (ligação) diz isso? Parece que6.5.9 p6 pode indicar a direção certa para a resposta, mas ainda é um pouco confuso.

questionAnswers(2)

yourAnswerToTheQuestion