[C con Clase] Diferencia entre creación variable normal y resevado de espcio con malloc.

Mariano Demarchi marchi.hh en gmail.com
Mie Oct 7 22:28:58 CEST 2009


malloc() permite reservar memoria en tiempo de ejecucion, pudiendo se
liberar en cualquier momento.

Supone que necesitas crear una tabla cuyo tamaño depende del curso que siga
el programa, una posibilidad seria calcular cual podria ser el maximo valor
para el tamaño de esta tabla y crear esta tabla en tiempo de diseño, con el
posible desperdicio de recursos segun sean las circunstancias. Por otro
lado,si se usa malloc o alloc, simplemente se reserva lo necesario.
Para casos un poco mas elaborados, pero basicamente fundamentados en lo
mismo, como la implementacion de estructuras netamente dinamicas, como por
ejemplo listas enlazadas, el uso de la memoria dinamica es casi
indispensable.
Obviamente, salvo casos muy particulares que desconozco, no tiene sentido
usar malloc para guarda una variable simple como ser un int o un char.

Cuando se usa malloc, la reserva se hace en el heap, mientras que para las
variables locales se usa la pila y para las estaticas la region de datos.
Cuando el proceso termina, por mas que no se halla usado free(), se libera
todo. Pero de todas maneras es una buena costumbre siempre liberar lo que no
se usa, asi tambien como poner en null los punteros todavia no
inicializados.


Saludos


El 7 de octubre de 2009 13:11, Jorge Vega Sanchez
<memmaker650 en gmail.com>escribió:

Buenas.
>
> Me acaba de surgir una duda que me corroe. No termino de verle uso a la
> función malloc para reservar espacio de memoria para una varible o struct o
> lo que sea. Al crear una variable no hacemos lo mismo ??? Si no librermoas
> este espacio reservado al finalizar nuestro programa lo seguimos teniendo
> ahí el valor ??
>
>
> Best regards
> Jorge
>
>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20091007/ac1eb9ef/attachment.html>


Más información sobre la lista de distribución Cconclase