¿Cuál es el propósito de asignar una cantidad específica de memoria para matrices en C ++?
Soy un estudiante que toma una clase sobre estructuras de datos en C ++ este semestre y me encontré con algo que no entiendo esta noche. Digamos que debía crear un puntero a una matriz en el montón:
int* arrayPtr = new int [4];
Puedo acceder a esta matriz usando la sintaxis del puntero
int value = *(arrayPtr + index);
Pero si tuviera que agregar otro valor a la posición de memoria inmediatamente después del final del espacio asignado para la matriz, podría acceder a ella
*(arrayPtr + 4) = 0;
int nextPos = *(arrayPtr + 4);
//the value of nextPos will be 0, or whatever value I previously filled that space with
La posición en la memoria de * (arrayPtr + 4) ha pasado el final del espacio asignado para la matriz. Pero por lo que yo entiendo, lo anterior aún no causaría ningún problema. Entonces, aparte de ser un requisito de C ++, ¿por qué incluso darles a las matrices un tamaño específico al declararlas?