관리형 타입

관리형 타입 (Managed types)

어떤 타입은 프로그래머가 일일이 초기화하고 정리하지 않아도 컴파일러가 알아서 다뤄줘요. 이런 타입을 관리형 타입(managed type) 이라고 해요. 어떤 타입이 해당하는지, 어떤 일이 벌어지는지 살펴볼게요.

출처: 문서

본문

기본적으로 Pascal 타입은 관리되지 않는(unmanaged) 상태예요. 다시 말해 변수를 명시적으로 초기화하고, 정리(finalize)하고, 메모리를 할당하는 일 등을 직접 해 줘야 해요. 하지만 Object Pascal에서는 몇몇 타입이 관리형(managed) 이에요. 이 타입의 변수는 컴파일러가 초기화하고 정리해 준다는 뜻이에요. 예를 들어 참조 카운트(reference counted) 데이터 타입은 이런 관리가 필요해요.

다음 타입들은 관리형이에요:

  • AnsiStringNil로 초기화돼요.
  • UnicodeStringNil로 초기화돼요.
  • WideStringNil로 초기화돼요.
  • InterfaceNil로 초기화돼요.
  • 동적 배열(Dynamic arrays)Nil로 초기화돼요.

그리고 요소가 관리형 타입을 포함하는 모든 레코드나 배열도 관리형이에요.

관리형 타입을 포함하는 클래스 인스턴스도 초기화되지만, 클래스 인스턴스 포인터 자체는 초기화되지 않아요.

관리형 타입의 변수는 정리(finalize) 도 돼요. 일반적으로 말하면, 그 참조 카운트가 늦어도 현재 스코프가 끝날 때 감소한다는 뜻이에요.

주의: 이 정리가 정확히 언제 일어날지는 가정하지 말아야 해요. 보장되는 건 오직 스코프를 벗어날 때(finalized when they go out of scope) 정리된다는 것뿐이에요.

더 알아보기

  • 참조 카운팅 문자열 타입(AnsiString, UnicodeString, WideString)은 문자 타입 절에서 다뤄요.
  • 변수의 초기화와 스코프 규칙은 변수 정의, 스코프 절을 참고하세요.