Autor
|
Tema: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica (Leído 2,119 veces)
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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
Mensajes: 3.696
🏴 Libertad!!!!!
|
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
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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
Mensajes: 93
|
"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
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
Maravilloso Gracias!
|
|
|
En línea
|
| Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL |
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[DUDA] Memoria Dinámica en C++
Programación C/C++
|
Zodiak98
|
3
|
2,384
|
5 Junio 2013, 18:48 pm
por Zodiak98
|
|
|
Duda Memoria Dinamica
Programación C/C++
|
Pepe2009
|
6
|
2,908
|
13 Agosto 2013, 17:59 pm
por Pepe2009
|
|
|
Duda con memoria dinamica
Programación C/C++
|
Ja_90
|
2
|
1,600
|
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,346
|
9 Marzo 2017, 13:14 pm
por matver
|
|
|
Consulta sobre punteros y memoria dinámica
Programación C/C++
|
ing_maipu
|
5
|
3,615
|
18 Octubre 2017, 19:21 pm
por ing_maipu
|
|