프로그래밍/C2011. 11. 29. 14:51

참조(C 펀더멘탈, 전웅 저, 한빛 미디어)

기억수명(storage duration, extent, lifetime)은 대상체에만 적용되는 개념이다.  대상체의 기억수명이란 어떤 대상체가 값을 저장하기 위해 할당받은 메모리를 차지하고 있는 시간을 말한다.  다시 말해, 프로그램에 선언된 모든 대상체가 시작부터 종료까지 계속 메모리에 상주하는게 아니라, 대상체의 기억수명이라는 것에 따라, 어느 순간 할당(alloc)받고  해제(dealloc)하는 것을 말한다.

C가 제공하는 대상체의 기억 수명은,

  • static storage duration 정적 기억수명
  • auto storage duration  자동 기억 수명
  • allocated storage duration  할당 기억 수명

이중 allocated storage duration 할당 기억 수명은 프로그램의 위치에 상관없이 메모리를 원하는 순간 요청하고 해제할 수 있는 기억 수명이다.  malloc()이 대표적인 예가 되겠다.

정적 기억수명과 자동 기억수명, 그리고 할당 기억수명의 가장 큰 차이는 할당되는 대상체의 크기가 프로그램 실행 중에 고정되어 있는지 여부이다.  언어 부분에 의해 지원되는 두 종류(자동, 정적)의 기억수명을 갖는 대상체는 프로그램이 실행되기 전에 그 크기가 상수로 고정되어 있어야 한다.

정적 기억수명을 갖는 대상체는 프로그램이 시작해서 종료될 때까지 메모리에 항상 존재한다.

자동 기억수명을 갖는 대상체는 그 대상체를 지칭하는 통용 범위와 운명을 함께 한다.

Posted by code cat