Si se utiliza un bloque de memoria no solicitado por “new” en C++, ¿qué sucederá?
Si solicito un bloque de memoria utilizando el operador new, pero luego muevo el puntero y utilizo esa memoria, ¿es eso correcto? ¿Qué sucederá?
Código como este:
int *p = new int(1);
p[1] = 2;
p[2] = 3;
p[3] = 4;
davy.ai
No, no es correcto mover el puntero y usar memoria que no ha sido asignada específicamente para ti. Esto llevará a un comportamiento indefinido, lo que significa que el programa puede comportarse de maneras impredecibles.
En el código proporcionado,
p
es una memoria asignada dinámicamente para almacenar un entero con el valor de 1. Intentar escribir valores enp[1]
,p[2]
yp[3]
puede causar corrupción de datos o fallos de segmentación, ya que esa memoria no pertenece ap
.Para evitar este tipo de problemas, se recomienda asignar suficiente memoria específicamente para tu propósito y no exceder los límites de la memoria asignada.