Visual Basic :: Unload 문을 이용한 메모리 관리

2008/12/11 09:08

Visual Basic으로 프로그램을 짜면 Form부터 구성합니다. 하나의 프로젝트 안에 여러 개의 Form을 구성할 수도 있죠.


여기서 2개 이상의 Form으로 구성된 프로그램을 구동시키면 모든 Form이 Load 된다는 사실이 중요합니다. "Load"라는 의미는 메모리에 저장된다는 뜻입니다. 보통 '종료', 'X' 같은 버튼을 누르거나 코드를 다 수행하면 프로그램이 종료되지만, 이 때 활성화 되어 있던 Form만 메모리에서 삭제됩니다. 즉, 비활성화 되어 있던 다른 Form들은 프로그램이 종료되어도 여전히 메모리에 남게 됩니다.


사용자 삽입 이미지

예를 들면 위 그림처럼 되는 겁니다. 이것이 hisAlpha Image v0.6의 버그였죠. 이제 이 문제를 해결해보겠습니다.


문제를 해결하는 방법은 Unload 이벤트와 메소드를 활용하는 것입니다. 아래의 코드를 넣겠습니다.


Private Sub Form_Unload(Cancel As Integer)
Unload fomPrint
Unload fomInput
End Sub


이 코드는 Form이 종료될 때 다른 Form들도 종료시키는 즉, 메모리에서 지우라는 명령입니다. 이것을 마지막 Form에만 넣는 게 아니라, 모든 Form에 넣어야 'X' 버튼을 이용한 종료에도 대응시킬 수 있겠죠? 이제 저장하고 실행해보겠습니다. 더 이상 메모리에 남아 있는 모습은 보이지 않네요.


이건 초보 개발자가 아니라도 많이 하는 실수 같습니다. 메모리를 남기는 버그를 가진 프로그램이 더러 보이더라구요.

크리에이티브 커먼즈 라이센스
Creative Commons License

6l4ck3y3 0x08 과거의 글모음/내 머리 속의 노트 , , , , ,

Trackback Address:이 글에는 트랙백을 보낼 수 없습니다