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

조회수 1327회

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

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

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

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

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

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

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

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.