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.
#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;
}
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
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
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