Malloc은 C언어에서 동적으로 메모리 할당을 한다.
따라서, 메모리를 가변적으로 할당하고 해제 하게 된다.


한정된 메모리 공간 내에서 특정 기능을 위해 메모리를 할당 했다가, 그 기능을 다 쓰고 나면
메모리를 다시 시스템에 반납하기 때문에 메모리를 효율적으로 사용할 수 있다.

하지만, Malloc을 통해 메모리를 할당하고 free를 통해 메모리를 해제하는 과정은 분명히 시간이 걸린다.
큰 용량의 메모리 공간을 빈번하게 malloc과 free를 통해 할당/해제하면 embedded 환경에서는 분명히
적지 않은 시간을 소비하게 된다.

반면, Array(배열)의 경우 프로그램이 실행될 때 단 한번만 메모리 공간을 잡기 때문에 추가적인 시간이 들지 않고,
메모리 해제에 대해 신경을 쓸 필요가 없어서 메모리 누수(memory leak)에 대해 걱정할 필요가 없다.


다중 프로세스 환경에서는 다른 프로세스가 메모리를 많이 잡아먹는 바람에 자신의 프로세스가 malloc을 통해
메모리를 할당하지 못하는 경우도 발생합니다. 애초에 미리 배열로 메모리를 정적으로 잡아 놓았다면 그런 경우는 드물것이다.

따라서, malloc이나 배열이나 자신이 개발하는 시스템 환경에 맞게 사용하는 것이 바람직 하다.


by 민트앤라떼 2011. 6. 1. 16:00