alloca(3) - wariua/manpages-ko GitHub Wiki
alloca - μλμΌλ‘ ν΄μ λλ λ©λͺ¨λ¦¬ ν λΉνκΈ°
#include <alloca.h>
void *alloca(size_t size);
alloca()
ν¨μλ νΈμΆμμ μ€ν νλ μμ size
λ°μ΄νΈμ 곡κ°μ ν λΉνλ€. alloca()
λ₯Ό νΈμΆνλ ν¨μκ° μκΈ° νΈμΆμμκ² λ°νν λ κ·Έ μμ 곡κ°μ΄ μλμΌλ‘ ν΄μ λλ€.
alloca()
ν¨μλ ν λΉλ 곡κ°μ μμμ μ λν ν¬μΈν°λ₯Ό λ°ννλ€. ν λΉμΌλ‘ μΈν΄ μ€ν μ€λ²νλ‘μ°κ° λ°μνλ κ²½μ° νλ‘κ·Έλ¨ λμ λ°©μμ κ·μ λμ΄ μμ§ μλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
alloca() |
μ€λ λ μμ μ± | MT-Safe |
POSIX.1μλ μ΄ ν¨μκ° μλ€.
32V, PWB, PWB.2, 3BSD, 4BSDμ alloca()
ν¨μκ° λ±μ₯νλ€λ μ¦κ±°κ° μλ€. 4.3BSDμ 맨 νμ΄μ§κ° μλ€. 리λ
μ€μμλ GNU λ²μ μ μ¬μ©νλ€.
alloca()
ν¨μλ λ¨Έμ μμ‘΄μ μ΄κ³ μ»΄νμΌλ¬ μμ‘΄μ μ΄λ€. μ΄λ€ μμ©λ€μμλ μ΄λ₯Ό μ¬μ©νλ κ²μ΄ malloc(3)κ³Ό free(3)λ₯Ό μ¬μ©νλ κ²μ λΉν΄ ν¨μ¨μ±μ ν₯μμν¬ μ μλ€. μ΄λ€ κ²½μ°μλ longjmp(3)λ siglongjmp(3)λ₯Ό μ°λ μμ©μμ λ©λͺ¨λ¦¬ ν΄μ κ° λ¨μν΄μ§κΈ°λ νλ€. κ·Έ μΈμ κ²½μ°μλ μ¬μ©μ κΆνμ§ μλλ€.
alloca()
λ‘ ν λΉν 곡κ°μ΄ μ€ν νλ μμμ ν λΉλκΈ° λλ¬Έμ longjmp(3)λ siglongjmp(3) νΈμΆλ‘ ν¨μ λ°νμ 건λλ°μ΄λ κ·Έ 곡κ°μ΄ μλμΌλ‘ ν΄μ λλ€.
alloca()
λ‘ ν λΉν 곡κ°μ κ°λ¦¬ν€λ ν¬μΈν°μ μ€μ½νλ₯Ό λ²μ΄λ λ κ·Έ 곡κ°μ΄ μλμΌλ‘ ν΄μ λλ κ² μλλ€.
alloca()
λ‘ ν λΉν 곡κ°μ free(3) ν΄μλ μ λλ€!
보ν΅μ gcc(1)
κ° alloca()
νΈμΆμ μΈλΌμΈ μ½λλ‘ λ³ννλ€. -ansi
λ -std=c89
, -std=c99
, -std=c11
μ΅μ
μ μ£Όκ³ <alloca.h>
ν€λλ₯Ό ν¬ν¨ μ νλ©΄ λ³νμ΄ μ΄λ€μ§μ§ μλλ€. κ·Έλ¬μ§ μμΌλ©΄ (-ansi
λ -std=c*
μ΅μ
μ΄ μμΌλ©΄) glibc λ²μ <stdlib.h>
μμ <alloca.h>
λ₯Ό ν¬ν¨μν€λλ° κ·Έ νμΌμ λ€μ νμ΄ μλ€.
#ifdef __GNUC__
#define alloca(size) __builtin_alloca (size)
#endif
κ·Έλμ μ΄ ν¨μμ μ체 λ²μ μ κ°μ§κ³ μμΌλ©΄ μν©μ΄ 볡μ‘ν΄μ§λ€.
μ½λκ° μΈλΌμΈ λλ€λ κ²μ μ΄ ν¨μμ μ£Όμλ₯Ό μ»λ κ²μ΄, κ·Έλ¦¬κ³ λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§ν¬ ν΄μ ν¨μμ λμ λ°©μμ λ°κΎΈλ κ²μ΄ λΆκ°λ₯νλ€λ μλ―Έμ΄λ€.
λ§μ κ²½μ°μμ μΈλΌμΈ λ μ½λλ μ€ν ν¬μΈν°λ₯Ό μ‘°μ νλ μΈμ€νΈλμ ν κ°λ‘ μ΄λ€μ Έ μκ³ μ€ν μ€λ²νλ‘μ°λ₯Ό κ²μ¬νμ§ μλλ€. λ°λΌμ NULL μ€λ₯ λ°νμ΄ μλ€.
μ€ν νλ μμ νμ₯ν μ μλ κ²½μ° μ€λ₯ νμκ° μλ€. (νμ§λ§ μλ§ ν λΉ μ€ν¨ νμ νλ‘κ·Έλ¨μ΄ ν λΉ μ λ 곡κ°μ μ κ·Όνλ € νλ©΄μ SIGSEGV
λ₯Ό λ°κ² λ κ²μ΄λ€.)
λ§μ μμ€ν
μμλ ν¨μ νΈμΆμ μΈμ λͺ©λ‘ λ΄μμ alloca()
λ₯Ό μ¬μ©ν μ μλλ°, κ·Έλ¬λ©΄ alloca()
κ° μμ½ν 곡κ°μ΄ μ€νμμ ν¨μ μΈμλ€μ μν κ³΅κ° μ€κ°μ μκ² λ κ²μ΄κΈ° λλ¬Έμ΄λ€.
2019-03-06