반응형

C언어 관련 책들을 보면

malloc에 대해 두렵게 표현한 것을 보곤 한다.


과연 malloc이 두려운 녀석일까?

아마 대부분의 사람들이

malloc을 통해 메모리를 할당하는 것보다

배열을 선언해서 사용하는 것에

더 편안한 마음을 가질 것이다.


일단 모양부터가 배열 선언은 심플하다.

 

 int number[100];


number[0], number[39]

이런 식으로 가져다 쓰면 끝이다.
이렇게 선언해 놓고


그럼 malloc이런 녀석은 어떨까?

 

int *number = (int*)malloc(sizeof(int)*100);


한눈에 보기에도 위에 배열 보단 골이 아프다.

일단 포인터가 나오는 데다


게다가 malloc하면 따라오는 녀석.

바로 free 함수를 빼놓을 수 없다.

malloc은 프로그래머가 heap이라는 메모리 영역에

임의의 공간을 잡는 것이기 때문에

해제하는 것도 프로그래머의 책임이다.

 

만약 malloc만 무진장하고

free를 하지 않으면 어떻게 될까?
바로 메모리 누수(Memory leak)가 발생하게 된다.

 

메모리가 줄줄줄 샌다는 거다.

현업에서 일을 하다 보면

메모리 leak때문에 속을 썩이는 경우가 있다.

 

요즘엔 메모리 leak을 체킹 하는 툴도

있다곤 하지만 플랫폼 환경에 따라서

반드시 사용할 수 있다는 보장이 없기 때문에

malloc을 사용할 땐 항상 free를 염두에 두어야 한다.


아예 malloc을 선언하자마자

바로 free를 소스코드에 넣어서

혹시 실수로 넣지 않는

불상사를 만들지 말아야 한다.

반응형