Dev - C++ - C++ Perdida de memoria Memory leak Recolección de basura

 
Vista:
sin imagen de perfil

C++ Perdida de memoria Memory leak Recolección de basura

Publicado por jose_luis (9 intervenciones) el 11/04/2017 21:23:11
Buenas tardes. Deseo que me intentéis sacar de dudas. Dispongo como ejemplo las siguientes instrucciones:

int *p;

p= new int;
*p=54;

p= new int; // Con esta asignación perdemos el enlace con el anterior int con la consiguiente
// pérdida de memoria.
*p=74;

delete p;

Evidentemente se me queda "colgado" un espacio de memoria que se representa por la primera asignación al no realizarle un delete y después continuar.

La duda es que una vez realizado esto, ¿ se podrá de forma automática capturar la memoria perdida al estar dentro la función principal int main(){ /*aquí*/ } y al terminar de realizar el ejecutable recuperarla ?

¿Si realizara un bucle (muy brutal, con datos de gran tamaño) casi infinito con lo anterior podría colapsar la memoria del ordenador ?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

C++ Perdida de memoria Memory leak Recolección de basura

Publicado por agustin (522 intervenciones) el 11/04/2017 21:54:42
si usas ese mismo código dentro de un bucle infinito agotará la memoria y tendrías problemas.
Que yo sepa al cerrarse la aplicación el sistema operativo libera toda la memoria ocupada por la aplicación pero creo que a veces no es así. A ver si alguien que sepa del tema te aclara más todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

C++ Perdida de memoria Memory leak Recolección de basura

Publicado por jose_luis (9 intervenciones) el 12/04/2017 15:07:52
Muchas gracias por su aporte. Efectivamente, yo lo creo así también. Sin embargo, si alguien pudiera hacernos un aporte indicándonos de dónde obtener dicha respuesta y si es autorizada mucho mejor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

C++ Perdida de memoria Memory leak Recolección de basura

Publicado por Capitan Kirk (48 intervenciones) el 17/04/2017 13:05:16
Una vez que ocurre eso que comentas no es posible acceder a la memoria reservada anteriormente. Por lo que respecta al programa, es memoria que queda marcada como reservada pero ya no tienes modo de llegar a ella.

Esa memoria queda liberada y devuelta al sistema operativo cuando el programa finaliza normalmente. Pero si el programa finaliza de manera anormal por algún error catastrófico, sí que podría ocurrir que no se liberasen los recursos reservados por el programa. Hay que ser muy cuidadoso cuando se utiliza memoria reservada dinámicamente.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

C++ Perdida de memoria Memory leak Recolección de basura

Publicado por jose_luis (1 intervención) el 22/04/2017 12:19:27
Gracias capitan Kirk. Entonces según lo que me indicas es que si no realizo el borrado de la memoria asignada dinámicamente, el programa al terminar su ejecución normal lo hará por mi y esa memoria se devolverá para reutilizarse. He estado mirando el ISO de c++ y otros documentos de c++ y tambien sobre gestión de memoria por los sistemas operativos y no he encontrado nada. Podrías hacer algun aporte documental de esa gestión de memoria. (?). Y alguien que pudiera hacer dicho aporte (???). Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar