alloca

ALLOCA(3)                Manual del Programador de Linux               ALLOCA(3)



NOMBRE
       alloca - concede memoria

SINOPSIS
       #include <alloca.h>

       void *alloca( size_t  size );

DESCRIPCIÓN
       La función alloca concede size bytes de espacio en el marco de pila
       (stack frame) del invocador.  Este espacio temporal se libera
       automáticamente cuando la función que llamó a alloca regresa a su
       invocador.

VALOR DEVUELTO
       La función alloca devuelve un puntero al comienzo del espacio concedido.
       Si la reserva provoca un desbordamiento de pila, el comportamiento del
       programa es indefinido.  Esta función no se encuentra en POSIX ni SUSv3.

NOTAS DE LA VERSIÓN GNU
       Normalmente, gcc traduce las llamadas a alloca por código inline. Ésto no
       es así cuando se especifica o bien la opción -ansi o bien la opción
       -fno-builtin. Pero atención! Por defecto la versión glibc de <stdlib.h>
       incluye <alloca.h> y éste contiene la línea
              # define alloca(size)   __builtin_alloca (size)
       lo que puede provocar confusión si se dispone de una versión privada de
       esta función.

       El hecho de que el código sea inline, implica que es imposible tomar la
       dirección de esta función, o cambiar su comportamiento enlazándola con
       una biblioteca diferente.

       El código inline consiste a menudo en una sola instrucción ajustando el
       puntero de pila, y no comprueba un posible desbordamiento de pila.  Por
       tanto, no se devuelve un error NULL.

FALLOS
       La función alloca es dependiente de la máquina y del compilador. En
       muchos sistemas su implementación es defectuosa. Su uso está
       desaconsejado.

       En muchos sistemas alloca no puede ser utilizada dentro de la lista de
       argumentos de una llamada a función, porque el espacio de pila reservado
       por alloca aparecería en mitad del espacio de pila para los argumentos de
       la función.

HISTORIA
       Hay evidencias de que la función alloca apareció en 32v, pwb, pwb.2,
       3bsd, y 4bsd. Hay una página de manual para ella en BSD 4.3.  Linux usa
       la versión de GNU.

VÉASE TAMBIÉN
       brk(2), pagesize(2), calloc(3), malloc(3), realloc(3)



GNU                               17 julio 2002                        ALLOCA(3)