🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
5 messages
5 total messages Started by Paco Fri, 16 Jul 1999 00:00
Reserva din�mica de memoria en C
#18833
Author: Paco
Date: Fri, 16 Jul 1999 00:00
12 lines
755 bytes
Por favor �Alguien me puede explicar detalladamente las diferencias entre
malloc(), calloc(), i sobre todo alloca()?
�Qu� influencia tienen una programaci�n multi-threaded?
�Donde reservan la memoria: en el heap? �todas?

Muchas gracias.
Un saludo.
PACO



--
Re: Reserva din�mica de memoria en C
#18840
Author: Enrique Ferrero
Date: Fri, 16 Jul 1999 00:00
29 lines
1617 bytes
Paco escribi� en mensaje <7mn1eh$gg1$1@talia.mad.ttd.net>...
>Por favor �Alguien me puede explicar detalladamente las diferencias entre
>malloc(), calloc(), i sobre todo alloca()?

En el man me parece a m� que queda bastante claro. Pero bueno. All� va.
malloc(),calloc() y realloc() reservan memoria en el heap. Cada una a su
manera.
alloca() reserva memoria en la pila.
La diferencia fundamental es que cuando termina la funci�n que ha llamado a
alloca(), la memoria que ha utilizado se pierde: la pila baja un nivel. Con
las otras funciones la memoria no se libera a no ser que se haga un free() o
que se acabe el proceso.

>�Qu� influencia tienen una programaci�n multi-threaded?


La reserva de memoria en el heap no tiene problema.
Para alloca(), la verdad es que no tengo ni idea, pero supongo que cada
thread debe tener una cantidad de pila asociada, por lo que alloca()
reservar�a memoria en esa pila propia del thread. Sin embargo, esto es
hablar por no callar.

>Muchas gracias.

Mira las p�ginas del man, y si on te queda claro, pregunta otra vez.

>Un saludo.
>PACO
Re: Reserva din�mica de memoria en C
#18708
Author: Cymoril sin patas
Date: Sun, 25 Jul 1999 00:00
98 lines
3366 bytes
A Fri, 16 Jul 1999 14:22:28 +0200, "Enrique Ferrero"
<enferpuc@olemail.com> contestaba a Paco ...

>
>Paco escribi� en mensaje <7mn1eh$gg1$1@talia.mad.ttd.net>...
>>Por favor �Alguien me puede explicar detalladamente las diferencias entre
>>malloc(), calloc(), i sobre todo alloca()?
>alloca() reserva memoria en la pila.
>La diferencia fundamental es que cuando termina la funci�n que ha llamado a
>alloca(), la memoria que ha utilizado se pierde: la pila baja un nivel. Con
>las otras funciones la memoria no se libera a no ser que se haga un free() o
>que se acabe el proceso.
O que hagamos un realloc() con valor cero o que falle el realloc()
>>�Qu� influencia tienen una programaci�n multi-threaded?
>La reserva de memoria en el heap no tiene problema.
>Para alloca(), la verdad es que no tengo ni idea, pero supongo que cada
>thread debe tener una cantidad de pila asociada, por lo que alloca()
>reservar�a memoria en esa pila propia del thread. Sin embargo, esto es
>hablar por no callar.
Pos puede ser, pero sin tener npi de como va el tema, la verdad es que
suena bien.
Respecto de malloc y calloc la diferencia es que a malloc le pasas la
memoria a reservar para un objeto y te da un puntero en vaya ud a
saber donde, y calloc le tienes que decir cuanta memoria para el
objeto a reservar y cuantos objetos de ese tipo.
Ejemplo (y perd�n si me esquivoko un posko):

typedef struct tpepe {   // definimos tpepe
char hola[20];
int saludo;
} *juan; // puntero a una estructura tpepe



/ * ... */

// ahora reservamos memoria para 4 estructuras tpepe
// usando malloc


if ( 
     (
       juan=malloc(
	(
	  sizeof(tpepe)*4
                                        ) 
              ) 
      )==NULL
   ) 
{
	printf("No hay memoria); 
	exit(-1); 
}

/* .... */
// usando calloc
if ( 
     (
       juan=malloc(
	(
	  sizeof(tpepe), 4
                                        ) 
              ) 
      )==NULL
   ) 
{


Como puedes observar hay pocas diferencias.

>>Muchas gracias.
Muschas de nadas
>Mira las p�ginas del man, y si on te queda claro, pregunta otra vez.
Eso eso, Paquito, mira las man.
>>Un saludo.
>>PACO
Otro pa ti y otro para Enrique.

Saludines
Cymoril++ (con patas).

P.D.

char **(*(*var () )[20]) ==> esta si que mola
A ver si no me equivoco ... (que estoy practicando)

var es un puntero
a una funci�n
que devuelve un puntero a
un array de 20 punteros a 
punteros de caracteres.
Je je. Se sale ...
-----------------------------------------------
Cymoril sin patas

"I believe this is heaven to no one else but me, and I'll defend it as long as I can be left alone to linger in my own silence." 

-----------------------------------------------
Re: Reserva din�mica de memoria en C
#18716
Author: Enrique Ferrero
Date: Mon, 26 Jul 1999 00:00
24 lines
1351 bytes
>char **(*(*var () )[20]) ==> esta si que mola
>A ver si no me equivoco ... (que estoy practicando)
>
>var es un puntero
>a una funci�n
>que devuelve un puntero a
>un array de 20 punteros a
>punteros de caracteres.
>Je je. Se sale ...

Por cosas com esta prefiero java.......  :-)

Si quieres ver c�digo c cr�ptico de verdad, busca informaci�n sobre el
concurso "ofuscated c". Hay un libro que a trav�s de estos programas ense�a
lo que NO se debe hacer en un programa.
Hay cosas verdaderamente flipantes.

>-----------------------------------------------
>Cymoril sin patas
>
>"I believe this is heaven to no one else but me, and I'll defend it as long
as I can be left alone to linger in my own silence."
>
>-----------------------------------------------
Re: Reserva din�mica de memoria en C
#18720
Author: Ignacio Arenaza
Date: Mon, 26 Jul 1999 00:00
17 lines
1215 bytes
>>>>> "Cymoril" == Cymoril sin patas <ceinalem@thegym.net> writes:

    Cymoril> verdad es que suena bien.  Respecto de malloc y calloc la
    Cymoril> diferencia es que a malloc le pasas la memoria a reservar
    Cymoril> para un objeto y te da un puntero en vaya ud a saber
    Cymoril> donde, y calloc le tienes que decir cuanta memoria para
    Cymoril> el objeto a reservar y cuantos objetos de ese tipo.

Ademas, calloc inicializa la zona de memoria pedida con todo ceros,
mientras que malloc te la pasa toda llena de bits sucios que a saber
quien ha usado ;-)

Saludos. I�aki.

-- 
  PGP Key available at http://personales.jet.es/inaki.arenaza/pgpkey.html
  Linux Registered User #44369
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads