table of contents
- trixie-backports 4.29.1-1~bpo13+1
- testing 4.29.1-1
- unstable 4.29.1-1
| alloca(3) | Library Functions Manual | alloca(3) |
NOMBRE¶
alloca - asigna memoria que se libera automáticamente
BIBLIOTECA¶
Biblioteca Estándar C (libc, -lc)
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.
ATRIBUTOS¶
Para obtener una explicación de los términos usados en esta sección, véase attributes(7).
| Interfaz | Atributo | Valor |
| alloca() | Seguridad del hilo | Multi-hilo seguro |
ESTÁNDARES¶
Ninguno.
HISTORIAL¶
PWB, 32V.
NOTAS¶
La función alloca() dependerá de la máquina y del compilador. Dado que asigna desde la pila, es más rápido que malloc(3) y free(3). En ciertos casos, también puede simplificar la liberación de memoria en aplicaciones que usan longjmp(3) o siglongjmp(3). De lo contrario, se desaconseja su uso.
Dado que el espacio asignado por alloca() se asigna dentro del marco de la pila, dicho espacio se libera automáticamente si se salta el retorno de la función mediante una llamada a longjmp(3) o siglongjmp(3).
El espacio asignado por alloca() no se libera automáticamente si el puntero que lo referencia simplemente sale del ámbito. Se liberará automáticamente cuando la función que lo llama retorna.
¡No intente liberar (free(3) el espacio asignado por alloca()!
Por necesidad, alloca() es una función interna del compilador, también conocida como __builtin_alloca(). Por defecto, los compiladores modernos traducen automáticamente todos los usos de alloca() a la función interna, pero esto no puede hacer si se solicita conformidad con estándares (-ansi, -std=c*), en cuyo caso se requiere <alloca.h> para evitar que se emita una dependencia de símbolo.
El hecho de que alloca() sea nativo, implica que es imposible tomar la dirección de esta función, o cambiar su comportamiento enlazándola con una biblioteca diferente.
Los vectores de longitud variable (VLA por sus siglas en inglés) forman parte del estándar C99, son opcionales desde C11 y pueden utilizarse para un propósito similar. Sin embargo, no se adaptan al estándar C++ y, al ser variables, residen en su ámbito de bloque y carecen de una interfaz similar a la de un asignador. Esto hace que sean inadecuadas para implementar funcionalidades como strdupa(3).
ERRORES¶
alloca() does not query the system for available stack memory, and does not fall back to using heap if stack storage is unavailable. It therefore cannot indicate an error if the allocation fails. If the allocation fails, the program is likely to receive a SIGSEGV signal.
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.
VÉASE TAMBIÉN¶
TRADUCCIÓN¶
La traducción al español de esta página del manual fue creada por Sebastian Desimone <chipy@argenet.com.ar>, Gerardo Aburruzaga García <gerardo.aburruzaga@uca.es>, Miguel Pérez Ibars <mpi79470@alu.um.es> y Marcos Fouces <marcos@debian.org>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.
| 29 Octubre 2025 | Páginas de Manual de Linux 6.16 |