Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ja_90 en 20 Octubre 2015, 05:32 am



Título: Duda con memoria dinamica
Publicado por: Ja_90 en 20 Octubre 2015, 05:32 am
Buenas noches,

Tengo una duda respecto a este codigo... creo un arreglo con memoria dinamica de la siguiente manera...

Código
  1. #include <iostream>
  2.  
  3. using std::cout;
  4. using std::cin;
  5. using std::endl;
  6.  
  7. int main() {
  8.  
  9.    int *ptro_arreglo = NULL;
  10.  
  11.    ptro_arreglo = new int[3];
  12.  
  13.    for(int i=0 ; i<3 ; i++) {
  14.       *(ptro_arreglo + i) = i;
  15.       cout << ptro_arreglo[i] << " ";
  16.    }
  17.  
  18.    delete []ptro_arreglo;
  19.  
  20.    cout << endl;
  21.  
  22.    for(int i =0 ; i<3 ; i++) {
  23.        cout << *(ptro_arreglo + i) << "  ";
  24.    }
  25.  
  26.    cin.get();
  27.    return 0;
  28. }
  29.  

Mi duda es cuando utilizo
Código
  1. 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...




Título: Re: Duda con memoria dinamica
Publicado por: ivancea96 en 20 Octubre 2015, 08:39 am
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.


Título: Re: Duda con memoria dinamica
Publicado por: Ja_90 en 20 Octubre 2015, 19:17 pm
ivancea96, muchas gracias eso era a lo que me referia...Me dejaste todo muy claro