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

조회수 2238회

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

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

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

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

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

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)