더북(TheBook)

코드의 malloc(4)와 같이 malloc() 함수는 함수 입력으로 양의 정수를 넣어주고 해당하는 양의 정수 바이트 수만큼 메모리를 할당 받습니다. 그러면 해당하는 주소가 함수의 결과로 전달됩니다. 전달된 주소를 저장할 수 있는 것은 포인터 변수이므로, 곧 포인터 변수 a가 주소를 전달받아 저장하는 것입니다.

예를 들어 int a = 100; 이라고 하면 정수형 변수를 저장하고자 4바이트 메모리가 할당되고, 해당하는 메모리에 100이라는 값이 저장됩니다. 그리고 100이 저장된 메모리에 접근하려면 변수의 이름 a를 사용합니다.

그러나 malloc() 함수를 실행하면 함수 실행의 결과로 반환되는 값은 할당 받은 메모리의 주소입니다. 즉, 변수 이름으로 해당하는 메모리에 접근할 수 없다는 의미입니다. 대신 우리는 메모리의 주소, 즉 포인터 변수를 통해 메모리에 접근하여 값을 저장하기도 하고 읽어 올 수도 있습니다.

그러면 할당 받은 메모리를 다 사용한 후에는 어떻게 해야 할까요? free() 함수를 호출하여 malloc() 함수로 할당 받은 메모리를 시스템에 반환합니다. 우리가 스스로 필요할 때에 할당 받은 메모리이므로 더 이상 필요하지 않다면 직접 free() 함수를 사용하여 메모리를 반환해야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.