C++ ¿Cuál es la diferencia entre delete y delete [ ]?
Si asigno un array de esta manera: int* arr = new int [n];
¿debo liberar la memoria usando delete arr;
o delete[] arr;
? ¿Cuál es la diferencia entre estos dos operadores en este caso (si hay alguna)?
davy.ai
Cuando se asigna un arreglo utilizando
new
, es importante liberar la memoria asignada una vez que ya no se necesite. La pregunta es si usardelete arr;
odelete[] arr;
.En este caso, debido a que
arr
fue asignado connew[]
, la forma correcta de liberar la memoria es utilizandodelete[] arr;
. La principal diferencia entredelete
ydelete[]
es quedelete
se utiliza para eliminar un objeto único asignado connew
, mientras quedelete[]
se utiliza para eliminar un arreglo de objetos asignados connew[]
.El uso incorrecto del operador delete puede causar un comportamiento indefinido o pérdidas de memoria, por lo tanto, es importante utilizar el operador correcto basado en cómo se asignó la memoria.