.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1980-1991, Regents of the University of California. .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH alloca 3 "17 Mayo 2025" "Páginas de Manual de Linux 6.15" .SH NOMBRE alloca \- asigna memoria que se libera automáticamente .SH BIBLIOTECA Biblioteca Estándar C (\fIlibc\fP,\ \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBvoid *alloca(size_t \fP\fIsize\fP\fB);\fP .fi .SH DESCRIPCIÓN La función \fBalloca\fP() concede \fIsize\fP 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 \fBalloca\fP() regresa a su invocador. .SH "VALOR DEVUELTO" La función \fBalloca\fP() 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. .SH ATRIBUTOS Para obtener una explicación de los términos usados en esta sección, véase \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfaz Atributo Valor T{ .na .nh \fBalloca\fP() T} Seguridad del hilo Multi\-hilo seguro .TE .SH ESTÁNDARES Ninguno. .SH HISTORIAL PWB, 32V. .SH NOTAS La función \fBalloca\fP() dependerá de la máquina y del compilador. Dado que asigna desde la pila, es más rápido que \fBmalloc\fP(3) y \fBfree\fP(3). En ciertos casos, también puede simplificar la liberación de memoria en aplicaciones que usan \fBlongjmp\fP(3) o \fBsiglongjmp\fP(3). De lo contrario, se desaconseja su uso. .P Dado que el espacio asignado por \fBalloca\fP() 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 \fBlongjmp\fP(3) o \fBsiglongjmp\fP(3). .P El espacio asignado por \fBalloca\fP() 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. .P ¡No intente liberar (\fBfree\fP(3) el espacio asignado por \fBalloca\fP()! .P Por necesidad, \fBalloca\fP() es una función interna del compilador, también conocida como \fB__builtin_alloca\fP(). Por defecto, los compiladores modernos traducen automáticamente todos los usos de \fBalloca\fP() a la función interna, pero esto no puede hacer si se solicita conformidad con estándares (\fI\-ansi\fP, \fI\-std=c*\fP), en cuyo caso se requiere \fI\fP para evitar que se emita una dependencia de símbolo. .P El hecho de que \fBalloca\fP() sea nativo, implica que es imposible tomar la dirección de esta función, o cambiar su comportamiento enlazándola con una biblioteca diferente. .P 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 \fBstrdupa\fP(3). .SH ERRORES Debido a la naturaleza de la pila, es imposible comprobar si la asignación desbordaría el espacio disponible y, por lo tanto, ninguna de las dos indica un error. Es probable que el programa reciba una señal \fBSIGSEGV\fP si intenta acceder a espacio no disponible. .P En muchos sistemas \fBalloca\fP() no puede ser utilizada dentro de la lista de argumentos de una llamada a función, porque el espacio de pila reservado por \fBalloca\fP() aparecería en mitad del espacio de pila para los argumentos de la función. .SH "VÉASE TAMBIÉN" \fBbrk\fP(2), \fBlongjmp\fP(3), \fBmalloc\fP(3) .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Sebastian Desimone , Gerardo Aburruzaga García , Miguel Pérez Ibars y Marcos Fouces . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .