Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: TheZeck en 29 Julio 2016, 15:59 pm



Título: (ayuda) Operadores new y delete
Publicado por: TheZeck en 29 Julio 2016, 15:59 pm
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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.    int *puntero = new int[5];
  7.  
  8.    for(int i = 0; i < 5; i++){
  9.        cout<<"Ingresa elemento "<<i+1<<": "; cin>>*(puntero + i);
  10.        cout<<endl;
  11.    }
  12.    delete[] puntero;
  13.  
  14.  
  15.    for(int i = 0; i < 5 ; i++){
  16.        cout<<*(puntero + i)<<endl;
  17.    }
  18.  
  19.    return 0;
  20. }


Título: Re: (ayuda) Operadores new y delete
Publicado por: 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


Título: Re: (ayuda) Operadores new y delete
Publicado por: TheZeck en 29 Julio 2016, 16:15 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


Título: Re: (ayuda) Operadores new y delete
Publicado por: engel lex en 29 Julio 2016, 16:26 pm
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