C/Visual C - MALLOC

 
Vista:

MALLOC

Publicado por Juan (1 intervención) el 14/12/2002 11:38:55
Alguien me puede aclarar exactamente el uso de malloc??? Para que lo necesito? Se que sirve para reservar memoria, pero para que quiero reservar memoria? Si voy a trabajar con un vector dinamico, no puedo declarar un vector de un tamaño,aunque luego me sobren posiciones???
Si lo hago con malloc,podría reservar una posición cada vez que la necesite?





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

RE:MALLOC

Publicado por El Mogur (202 intervenciones) el 14/12/2002 14:16:56
El malloc sirve para utilizar memoria dinámica. Para todo lo que se necesite memoria dinámica, es útil (en C, en C++ suele usarse new).
En el caso que dices de los vectores, tu solución no es demasiado buena. Dices de darle un tamaño fijo al vector, y no utilizandolo todo. Pero, ¿qué tamaño le das? Tiene que ser lo suficientemente grande como para no necesitar más. Por lo tanto, tu programa estará almacenando un vector muy grande (para los casos peores), cuando en realidad utilizas siempre pocas posiciones de ese vector.

Hacerlo con malloc no te permite reservar una posición cada vez que lo necesites (si estamos hablando de vectores o arrays, y no de listas enlazadas, otra utilidad de la memoria dinámica). Sin embargo, con malloc puedes definir un vector de un tamaño _no conocido en tiempo de compilación_.
Por ejemplo, vamos a cargar en un vector de caracteres un fichero de texto. A la hora de escribir el programa, no sabemos de qué tamaño podemos necesitar el vector. En la solución que dices tú, declaramos por ejemplo, un vector de 1Mb, confiando en que nunca intentemos cargar ficheros más largos. Sin embargo, muchas veces cargaremos ficheros de unos pocos Kb's, desaprovechando mucha memoria; además en el caso de intentar cargar uno más grande, no podremos.
Con malloc, primero averiguamos el tamaño del fichero, después pedimos la memoria justa que se necesita, y cargamos en ella el fichero.

Espero que hayas cogido la idea!
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