C언어에서 free() 함수


C언어에서 메모리를 동적할당을 할 때, malloc()와 free()를 사용 합니다.

한가지 의문점인 것이, malloc을 사용하여 동적 할당한 메모리 사이즈를 free함수가 어떻게 알고 동적할당을 푸느냐는 것입니다.

#include <stdlib.h>
#include <iostream>
int main(){
    using namespace std;

    void* p;
    p = malloc(16);
    cout << p << "\n";
    cout << p+16 << "\n"

    free(p);
    cout << p << "\n";
    cout << p+16 << "\n"

}

동적할당된 메모리의 크기가 어디엔가라도 저장되는 건가요?

애초에 어떻게 동적할당된 메모리를 보호하고, 보호된 메모리를 어떻게 free함수가 보호를 해제 하는건가요?

알려 주시면 감사하겠습니다.

  • 2017년 12월 16일에 작성됨
    인공생명(Aritificial Life)와 인공지능에 관심이 많은 학생입니다. 주로 Python을 애용 합니다.

조회수 304


Hashcode banner summercoding

1 답변


malloc(16) 으로 메모리 할당을 하면 사용자에게 16바이트의 공간을 할당해 줍니다. 이 16바이트는 사용자가 사용할 수 있는 가상메모리의 공간을 의미합니다 실제 운영체제가 관리하는 메모리상에는 이 메모리 공간의 관리를 위한 추가적인 공간이 더 붙습니다. free 함수는 이 관리메모리 부분에 저장된 정보를 읽고 메모리를 free 시킬수 있습니다.

  • 2017년 12월 18일에 작성됨

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

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