Título: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica Publicado por: class_OpenGL en 29 Mayo 2016, 19:53 pm Hola, hoy tengo una duda que me gustaría solventar.
¿ANSI C nos asegura que cuando un programa que finaliza bruscamente (con return en la función main), el programa libera la memoria dinámica, o eso solo ocurre dependiendo del sistema operativo? Espero que se comprenda mi duda. Muchas gracias. Título: Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica Publicado por: AlbertoBSD en 29 Mayo 2016, 20:10 pm En teoria eso depende totalmente del sistema operativo.
Cuando ejecutas el programa el sistema le asigna recursos y al final los recicla. Si te fijas cuando inicias el programa las variables pueden estar o no estar inicializadas y si te pones a ejecutar un programa y pides un poco de memoria dinamica. puedes imprimir X cantidad de bytes mas y tal vez veas datos de programas viejos. Título: Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica Publicado por: class_OpenGL en 29 Mayo 2016, 20:57 pm Si, pero no me refiero a si los datos quedan guardados, que supongo que si. A lo que me refiero, es, si por ejemplo mi programa ha asignado 100 bytes de memoria dinámica y el programa se cierra sin haber llamado a free, entonces mi pregunta es si a otro programa se le podrían asignar esos mismos 100 bytes o no.
Básicamente, pregunto que si al hacer return en la función main habiendo llamado a malloc, esta instrucción "llama" a free liberando toda la memoria dinámica usada por el programa, o esto lo hace el sistema operativo, o tendría que reiniciar el ordenador porque esa memoria ha quedado asignada a un programa que ya se ha cerrado y "se ha perdido la referencia a esa memoria dinámica". Gracias! Título: Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica Publicado por: geeke en 29 Mayo 2016, 21:14 pm "se ha perdido la referencia a esa memoria dinámica" Eso no pasa al menos en los sistemas operativos modernos porque estos realizan un seguimiento de toda la memoria reservada por un programa y cuando este finaliza (por cualquier razón) sin haber liberado la memoria el sistema procede a recuperar toda la memoria asignada Título: Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica Publicado por: class_OpenGL en 29 Mayo 2016, 21:19 pm Maravilloso :)
Gracias! |