Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Perdida de Memoria en C

Estas en el tema de Perdida de Memoria en C en el foro de C/C++ en Foros del Web. Bueno soy nuevo estudiando el Lenguaje C y me vino el topico de punteros y otros. Lo que me dejaron entendido, es que se apunta ...
  #1 (permalink)  
Antiguo 15/11/2010, 21:33
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Perdida de Memoria en C

Bueno soy nuevo estudiando el Lenguaje C y me vino el topico de punteros y otros.
Lo que me dejaron entendido, es que se apunta la memoria para que podamos tener la direccion en donde esta almacenado determinado dato. Y con eso mismo poder liberarlo posteriormente para que no quede ocupado ese lugar de memoria.... Con esto mismo me explicaron tambien que aquellas variables que no son apuntadas quedan guardadas en la memoria y esta se pierde....

Que Memoria es aquella que se pierde? y que se puede hacer para recuperarla?.

(Se que son infimos datos y bytes pero soy medio estricto en el tema de que el computador rinda bien y no se pierdan cosas)



Un abrazo y de antemano muchas gracias por sus respuestas!
  #2 (permalink)  
Antiguo 16/11/2010, 09:10
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Perdida de Memoria en C

No es ínfimo si tenés un bucle o un algoritmo recursivo que se llama a sí mismo cientos de veces.

En C++, asignar memoria para guardar 10 enteros (un vector)
int* vector = new int[10];

Si luego no se hace

delete[] vector;

y se hace algo como

vector = otropuntero;

la memoria reservada por la llamada a new sigue estando asignada al programa, ningún otro programa en la computadora puede usarla, pero mi programa ya no tiene forma de referenciar a ella y liberarla, porque la única referencia que tenía ahora apunta a otra cosa.

Una vez que no tenés más referencias, ya no se puede liberar esa memoria, se liberará cuando el programa termine. Por eso es muy importante usar delete (free) cada vez que se pide memoria con new (malloc).

Etiquetas: memoria, perdida
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:20.