왜 alloca()를 쓰면 안 되나요?
조회수 5374회
alloca()
는 heap이 아니라 stack에서 메모리를 동적 할당해주고, 루틴에서 돌아오면 알아서 메모리를 해제한다고 알고 있는데요
그럼 malloc()
같이 일일이 free해 주지 않아되니까 더 안전해서 권장되야되는 거 아닌가요?
근데 왜 쓰면 안 되나요?
1 답변
-
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.
라고 합니다. 스택 오버플로우가 날 경우는 문제가 된다고 적혀있고, 쓰지 말라고 하진 않네요
절대 쓰지 말라고 돼있진 않고 사실 엄청 큰 값을 할당하지만 않는다면 딱히 문제 될 것 없는 함수라서 제가 있던 프로젝트에서는 자주 쓰던 함수였습니다.
댓글 입력