왜 alloca()를 쓰면 안 되나요?

조회수 5374회

alloca()는 heap이 아니라 stack에서 메모리를 동적 할당해주고, 루틴에서 돌아오면 알아서 메모리를 해제한다고 알고 있는데요

그럼 malloc()같이 일일이 free해 주지 않아되니까 더 안전해서 권장되야되는 거 아닌가요? 근데 왜 쓰면 안 되나요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    linux man page를 보면

    RETURN VALUE The alloca() function returns a pointer to the beginning of the allocated space. If the allocation causes stack overflow, program behaviour is undefined.

    라고 합니다. 스택 오버플로우가 날 경우는 문제가 된다고 적혀있고, 쓰지 말라고 하진 않네요

    절대 쓰지 말라고 돼있진 않고 사실 엄청 큰 값을 할당하지만 않는다면 딱히 문제 될 것 없는 함수라서 제가 있던 프로젝트에서는 자주 쓰던 함수였습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)