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?