C언어에서 free() 함수
조회수 1662회
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함수가 보호를 해제 하는건가요?
알려 주시면 감사하겠습니다.
1 답변
-
malloc(16) 으로 메모리 할당을 하면 사용자에게 16바이트의 공간을 할당해 줍니다. 이 16바이트는 사용자가 사용할 수 있는 가상메모리의 공간을 의미합니다 실제 운영체제가 관리하는 메모리상에는 이 메모리 공간의 관리를 위한 추가적인 공간이 더 붙습니다. free 함수는 이 관리메모리 부분에 저장된 정보를 읽고 메모리를 free 시킬수 있습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력