Qual é o objetivo de alocar uma quantidade específica de memória para matrizes em C ++?

Eu sou um aluno participando de uma aula sobre estruturas de dados em C ++ neste semestre e me deparei com algo que ainda não entendo hoje à noite. Digamos que eu deveria criar um ponteiro para uma matriz na pilha:

int* arrayPtr = new int [4];

Eu posso acessar esse array usando a sintaxe do ponteiro

int value = *(arrayPtr + index);

Mas se eu adicionasse outro valor à posição da memória imediatamente após o final do espaço alocado para a matriz, seria possível acessá-lo

*(arrayPtr + 4) = 0;
int nextPos = *(arrayPtr + 4);
//the value of nextPos will be 0, or whatever value I previously filled that space with

A posição na memória de * (arrayPtr + 4) ultrapassa o final do espaço alocado para a matriz. Mas, tanto quanto eu entendo, o acima exposto ainda não causaria problemas. Portanto, além de ser um requisito do C ++, por que atribuir às matrizes um tamanho específico ao declará-las?

questionAnswers(5)

yourAnswerToTheQuestion