elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica  (Leído 2,097 veces)
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
[C] (Consulta) Duda cuando un programa en C termina y memoria dinámica
« 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.


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica
« Respuesta #1 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.



En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica
« Respuesta #2 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!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica
« Respuesta #3 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
« Última modificación: 29 Mayo 2016, 21:34 pm por geeke » En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica
« Respuesta #4 en: 29 Mayo 2016, 21:19 pm »

Maravilloso :)

Gracias!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[DUDA] Memoria Dinámica en C++
Programación C/C++
Zodiak98 3 2,375 Último mensaje 5 Junio 2013, 18:48 pm
por Zodiak98
Duda Memoria Dinamica
Programación C/C++
Pepe2009 6 2,904 Último mensaje 13 Agosto 2013, 17:59 pm
por Pepe2009
Duda con memoria dinamica
Programación C/C++
Ja_90 2 1,591 Último mensaje 20 Octubre 2015, 19:17 pm
por Ja_90
Cuando hay espacios en el ingreso del nombre el programa termina
Programación C/C++
matver 3 2,324 Último mensaje 9 Marzo 2017, 13:14 pm
por matver
Consulta sobre punteros y memoria dinámica
Programación C/C++
ing_maipu 5 3,593 Último mensaje 18 Octubre 2017, 19:21 pm
por ing_maipu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines