Duda con memoria dinamica

Iniciado por Ja_90, 20 Octubre 2015, 05:32 AM

0 Miembros y 1 Visitante están viendo este tema.

Ja_90

Buenas noches,

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

Código (cpp) [Seleccionar]

#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
Código (cpp) [Seleccionar]
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...


:D  ::::Ja_90::::   :D

ivancea96

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.

Ja_90

ivancea96, muchas gracias eso era a lo que me referia...Me dejaste todo muy claro
:D  ::::Ja_90::::   :D