본문 바로가기

Education

[부스트 코딩 뉴비 챌린지 2020] week3_Q&A : malloc()

반응형

Q. malloc()의 사용 이유가 궁금합니다.
프로그램 작성 시에 메모리 필요량을 예측할 수 없는 경우일 때 malloc을 이용하여 미리 메모리 공간을 확보하게 되면 메모리를 지나치게 낭비하게 될 것이라고 생각합니다. 그렇다면 메모리 필요량을 예측할 수 있을 경우에만 malloc을 사용하나요?
또 배열명[크기]를 통해 배열의 크기를 지정하는 것과 malloc을 사용하는 것의 차이점이 궁금합니다.

메모리 필요량을 예측할 수 없는 경우일 때는 보통 (예를 들어) 1024바이트의 malloc을 할당하고, 이 공간을 다 쓰게 되면 1024바이트를 추가로 할당하고, … 하는 식으로 메모리 공간을 할당합니다.

배열명[크기]를 통해 변수를 지정하면 그 변수는 stack에 저장되며, malloc을 통해 변수를 지정하면 그 변수는 heap에 저장됩니다. stack과 heap은 메모리가 저장되는 대표적인 공간으로, stack은 함수 호출이나 지역 변수를 저장할 때 사용되며 heap은 malloc으로 할당된 변수를 저장할 때 사용됩니다.

일반적으로 stack은 heap보다 훨씬 작습니다. 따라서 어마어마하게 큰 메모리를 사용할 경우에는 malloc을 사용하는 것이 좋습니다.

또한 malloc은 dynamic memory allocation을 위한 방법으로, 배열 등의 자료형은 fixed인데 비해 malloc을 사용하면 dynamic한 메모리 할당이 가능하므로 프로그램 내에서의 메모리 활용이 훨씬 자유롭습니다.

malloc에 대해서는 5주차에 자세히 배우게 됩니다. 궁금하신 점이 남았다면 댓글로 달아주세요!

 

배열명[크기] malloc
stack
→함수 호출, 지역 변수 저장
heap
→malloc으로 할당된 변수 저장
fixed dynamic
크기 : stack <<<< heap

 

반응형