Buenas noches,
Tengo una duda respecto a este codigo... creo un arreglo con memoria dinamica de la siguiente manera...
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main() {
int *ptro_arreglo = NULL;
ptro_arreglo = new int[3];
for(int i=0 ; i<3 ; i++) {
*(ptro_arreglo + i) = i;
cout << ptro_arreglo[i] << " ";
}
delete []ptro_arreglo;
cout << endl;
for(int i =0 ; i<3 ; i++) {
cout << *(ptro_arreglo + i) << " ";
}
cin.get();
return 0;
}
Mi duda es cuando utilizo delete []ptro_arreglo
, si ya elimine la memoria utilizada....
cuando imprimo de nuevo el arreglo sigue alli..no se deberia eliminar?...Gracias por sus respuestas...
Se elimina, y nada te asegura que esa memoria siga estando allí.
Una vez liberes memoria, es amemoria ya no pertenece a tu proceso. Acceder a ella puede ser una acción ilegal.
Si es lo que pregunta, no, hacer DELETE no pone la memoria a 0 ni nada del estilo. La memoria permanece inmutable hasta que otro proceso coge esa memoria.
ivancea96, muchas gracias eso era a lo que me referia...Me dejaste todo muy claro