Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷!시작하기

Microsoft. NET 을 시작하는 분들을 위한 강좌입니다. 주로 기초적인 내용과 때론 기본적인 내용을 다룹니다

Destructor (소멸자)

작성자 : 박종명
최초 작성일 : 2008-05-30 (금요일)
최종 수정일 : 2008-05-30 (금요일)
조회 수 : 5150

소멸자(파괴자)에 대해 간략히만 본다
 
* 개요
생성자와는 반대되는 개념이다. 소멸자에서는 객체의 소멸시 이루어 져야할 일련의 과정을 포함 시킨다.
닷넷에서는 생성된 객체를 명시적으로 소멸 시킬 수 없다.

GC(가비지 컬렉터)가 객체 소멸을 관장하는데 이 GC가 해당 객체를 소멸 시킬 경우 그 객체의 Finalize  메쏘드가 있을 경우 이를 실행 한뒤 객체를 메모리로 부터 해제 시킨다.
 
닷넷에서는 명시적으로 Finalize 메쏘드를 오버라이딩 할 수 없다. 단, 클래스의 소멸자가 정의 되면 컴파일시 그 소멸자는 Finalize 메쏘드로 대체되어 진다.
 
* 목적
기본적으로 닷넷에서는 메모리 관리를 프로그래머가 신경쓰지 않도록 설계 되었다.
(과연 신경쓰지 않아도 될지는 의문이다 -.-;)
GC에 의해 메모리 관리가 암시적으로 이루어 지도록 되었다. 그러나 관리 되지 않는 리소스를 프로그램에서 사용 할 경우에는 예기가 달라 진다. 파일이나 네트워크 연결과 같은 관리 되지 않는 리소스는 소멸자를 이용하여 메모리를 해제 해야 한다
 
* 소멸자 규칙
- 접근 권한 변경자 없음
- 반환값 없음
- ~ 클래스 명
- 파라메타 없음
 
* EX
class Test{
  ~Test{ 일련의 해제 과정을 기술함 }
}
 
이 코드는 컴파일시 암시적으로 다음과 같이 변환된다
protected override void Finalize()
{
   try
   {
      일련의 해제 과정을 기술함 .
   }
   finally
   {
      base.Finalize();
   }
}


 
* Demo
소멸자를 정의하고 소멸자의 수행 순서를 알아 본다.
소멸자는 GC에 의해 호출되므로 강제로 GC가 수행되도록 한다.

이름
비밀번호
홈페이지
QE <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요