C 동적 메모리 할당

위키백과, 우리 모두의 백과사전.

C 동적 메모리 할당동적 메모리 할당을 위한 수동 메모리 관리를 수행하는 것을 말하며 C에 담긴 malloc, realloc, calloc 그리고 free 등의 함수를 말한다. 메모리 동적 할당을 위한 포인터 변수를 선언하여 동적 할당을 하는 순간 일반 변수를 저장하는 stack이 아닌 heap에 저장되기 때문에 free로 동적 할당을 해제하지 않는 이상 메모리가 반납되지 않으며, 따라서 함수가 끝나더라도 메모리의 값은 유지된다. 그래서 C언어 교재나 강의에서 문자열, 구조체 주소를 반납하는 함수를 다룰 때 malloc 사용을 반드시 하거나, static을 사용하라고 한다.[1][2][3]

C++ 언어에는 C 언어와 호환되는 위의 함수들을 포함되나 기능적으로 유사한 newdelete 오퍼레이터가 제공되며 이쪽을 사용하는 것이 권장된다.[4]

malloc을 사용함으로써 여러 방식의 실제 메모리 할당 매커니즘을 실행할 수 있다. 퍼포먼스 방식에 따라 실행 시간이나 필요한 메모리 공간 또한 다양하다.

각주[편집]

  1. 《ISO/IEC 9899:1999 specification》 (PDF). p. 313, § 7.20.3 "Memory management functions". 
  2. Godse, Atul P.; Godse, Deepali A. (2008). 《Advanced C Programming》. p. 6-28: Technical Publications. 400쪽. ISBN 978-81-8431-496-0. 
  3. Summit, Steve. “C Programming Notes - Chapter 11: Memory Allocation”. 2011년 11월 6일에 원본 문서에서 보존된 문서. 2011년 10월 30일에 확인함. 
  4. Stroustrup, Bjarne (2008). 《Programming: Principles and Practice Using C++》. 1009, §27.4 Free store: Addison Wesley. 1236쪽. ISBN 978-0-321-54372-1.