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


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

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

  • 2016년 01월 29일에 작성됨

조회수 283


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.

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

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

  • 2016년 01월 29일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close