.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (c) 1980, 1991 Regents of the University of California.
.\" All rights reserved.
.\"
.\" SPDX-License-Identifier: BSD-4-Clause-UC
.\"
.\"     @(#)alloca.3	5.1 (Berkeley) 5/2/91
.\"
.\" Converted Mon Nov 29 11:05:55 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Tue Oct 22 23:41:56 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2002-07-17, aeb
.\" 2008-01-24, mtk:
.\"     Various rewrites and additions (notes on longjmp() and SIGSEGV).
.\"     Weaken warning against use of alloca() (as per Debian bug 461100).
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH alloca 3 "15 grudnia 2022 r." "Linux man\-pages 6.03" 
.SH NAZWA
alloca \- przydziela pamięć, która jest automatycznie zwalniana
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <alloca.h>\fP
.PP
\fBvoid *alloca(size_t \fP\fIrozmiar\fP\fB);\fP
.fi
.SH OPIS
Funkcja \fBalloca\fP() przydziela \fIrozmiar\fP bajtów pamięci na ramce stosu
procedury, z której została wywołana. Ta tymczasowa przestrzeń jest
automatycznie zwalniana po powrocie funkcji, która wywołuje \fBalloca\fP() do
miejsca wywołania.
.SH "WARTOŚĆ ZWRACANA"
Funkcja \fBalloca\fP() zwraca wskaźnik do początku przydzielonej pamięci. Gdy
przydzielenie pamięci spowoduje przepełnienie stosu, zachowanie programu nie
jest określone.
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBalloca\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne
.TE
.hy
.ad
.sp 1
.SH STANDARDY
Funkcja nie występuje w POSIX.1.
.PP
\fBalloca\fP() pochodzi z PWB i 32V, i pojawia się w ich wszystkich pochodnych.
.SH UWAGI
Funkcja \fBalloca\fP() zależy od maszyny i kompilatora. Alokacja zachodzi ze
stosu, dlatego jest szybsza niż \fBmalloc\fP(3) i \fBfree\fP(3). W pewnych
przypadkach może także uprościć zwalnianie pamięci w aplikacjach,
używających  \fBlongjmp\fP(3) lub \fBsiglongjmp\fP(3). W pozostałych przypadkach
użycie tej funkcji nie jest zalecane.
.PP
Ponieważ przestrzeń alokowana przez \fBalloca\fP() jest przydzielana z
przestrzeni stosu, to przestrzeń ta jest automatycznie zwalniana, jeśli
nastąpi przeskoczenie powrotu z funkcji przez wywołanie \fBlongjmp\fP(3) lub
\fBsiglongjmp\fP(3).
.PP
Przestrzeń zaalokowana przez \fBalloca\fP() \fInie\fP jest automatycznie
dealokowana, jeśli wskaźnik, który się do niej odnosi wychodzi poza zakres.
.PP
Pamięci przydzielonej przez \fBalloca\fP() nie można zwalniać za pomocą
\fBfree\fP(3)!
.PP
Z konieczności \fBalloca\fP() jest funkcją wbudowaną kompilatora, znaną również
jako \fB__builtin_alloca\fP(). Domyślnie, współczesne kompilatory automatycznie
tłumaczą wszystkie wystąpienia \fBalloca\fP() na wbudowaną, lecz jest to
niedopuszczalne, jeśli zażądano zgodności ze standardami (\fI\-ansi\fP,
\fI\-std=c*\fP). W takim przypadku wymagane jest \fI<alloca.h>\fP, aby
wyemitowana była zależność symboliczna.
.PP
To, że \fBalloca\fP() jest wbudowana, powoduje niemożliwość pobrania jej
adresu, jak też niemożliwość zmiany jej zachowania poprzez konsolidację z
inną biblioteką,
.PP
Tablice o zmiennym rozmiarze (ang. variable length array \[em] VLA) są
częścią standardu C99, opcjonalną od C11, i mogą służyć podobnym celom. Nie
portują się jednak do standardu C++ i, będąc zmiennymi, istnieją w swoim
zasięgu blokowym i nie posiadają interfejsu przypominającego alokator, co
czyni je nieodpowiednimi do implementowania funkcjonalności takich jak
\fBstrdupa\fP(3).
.SH USTERKI
Ze względu na naturę stosu, nie da się sprawdzić, czy alokacja przepełni
dostępną przestrzeń, stąd nie ma żadnego powiadomienia o błędzie (jednakże
program najprawdopodobniej otrzyma sygnał \fBSIGSEGV\fP, jeśli spróbuje uzyskać
dostęp do niedostępnej przestrzeni).
.PP
W wielu systemach \fBalloca\fP() nie może być używana w obrębie listy
argumentów w wywołaniu funkcji, gdyż zarezerwowana przez \fBalloca\fP()
przestrzeń stosu znalazłaby się w środku przestrzeni stosu przeznaczonej na
argumenty funkcji.
.SH "ZOBACZ TAKŻE"
\fBbrk\fP(2), \fBlongjmp\fP(3), \fBmalloc\fP(3)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Adam Byrtek <alpha@irc.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>,
Robert Luberda <robert@debian.org>
i
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
