alloca()에 대해서 제가 이해한건
이건 메모리가 힙에 잡히지 않고 스택에 잡히므로 프로그램이나 루틴 종료시 free()하지 않아도 된다고 알고 있거든요. 실제로 alloca메로리를 free()시켰는데 그 부분에서 세그멘트 폴트가 나는 경우도 있고요.
특히 가변적인 스트링 비교함수에서 아래와 같은 표현을 쓰는 것을 봤는데 이렇게 하면 빠른가요?
int
fnmatch (const char *pattern, const char *string, int flags)
{
register char *p, *pat, *n, *str;
register char c;
strcpy(n = alloca(strlen(string)+1), string);