(ayuda) Operadores new y delete

Iniciado por TheZeck, 29 Julio 2016, 15:59 PM

0 Miembros y 2 Visitantes están viendo este tema.

TheZeck

Hola, alguien podría ayudarme con esto? estuve viendo el tema de los operadores new y delete y queria darle valores a un arreglo para luego liberarlo usando delete e imprimir los valores nuevos que tendrían (se supone que seria cualquier valor) pero los 3 últimos valores siguen siendo los mismos a los que ingreso, entonces me hace pensar que no se ha liberado nada más que los dos primeros elementos. Gracias de antemano.
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
   int *puntero = new int[5];
   
   for(int i = 0; i < 5; i++){
       cout<<"Ingresa elemento "<<i+1<<": "; cin>>*(puntero + i);
       cout<<endl;
   }
   delete[] puntero;


   for(int i = 0; i < 5 ; i++){
       cout<<*(puntero + i)<<endl;
   }

   return 0;
}

engel lex

delete no va a limpiar la memoria (seria perder tiempo en algo innecesario ) solo la va a liberar para que sea usable por otra varible o proceso

a menos que otra variable acceda y cambie ese valor ese puntero parecerá valido
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

TheZeck

Cita de: engel lex en 29 Julio 2016, 16:12 PM
delete no va a limpiar la memoria (seria perder tiempo en algo innecesario ) solo la va a liberar para que sea usable por otra varible o proceso

a menos que otra variable acceda y cambie ese valor ese puntero parecerá valido

Entonces en teoría lo que hice en el código esta bien solo que la definición sobre los operadores la tenia mal, verdad? por cierto gracias

engel lex

si, para "verlo funcionar" puedes declarar un array de 20millones de valores int (int=32bits =4bytes... *20.000.000 = 80MB) con el administrador de tareas abierto, luego das enter para que haga el delete y veras como baja ese espacio o para no ser salvaje, puedes hacer debug 
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.