C가 free는 어떻게 "얼마나 free"해야 할지 아는 건가요?


타입 하나씩만 가리키는 포인터는 그럴 수 있다고 치는데 배열로 쓰는 포인터는 메모리를 해제할 때 얼마나 해제해야 하는지 누가 가르쳐주나요?

함수에 배열을 넘겨줄 때는 배열이랑 배열 크기까지 같이 넘겨주는데 free는 크기를 안 가르쳐줘도 알아서 해제해주잖아요 그럼 저도 free처럼 제 함수를 만들 때 자동으로 크기를 알아내는 함수를 만들 수 있을까요?

  • 2016년 01월 29일에 작성됨

조회수 193


1 답변


좋아요
0
싫어요
채택취소하기

유저가 malloc()을 부를 때는 메모리를 얼마나 할당할 건지를 정하죠? 실제로 메모리를 할당할 때는 딱 유저가 정한 크기만큼만 할당되는 게 아니라 메모리를 안정적으로 접근 할 수 있게 (유저가 정한 크기 + 블록 크기)를 할당됩니다.

free를 호출할 때 이 추가된 블록 크기를 가지고 free 해주기 때문에 굳이 해제할 배열의 크기를 지정하지 않아도 됩니다

안타깝지만 free처럼 함수를 정의하기는 힘들것 같네요

  • 2016년 01월 29일에 작성됨

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

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