Web3D를 구현하기 위해, ActiveX에 OpenGL을 구현하는 프로그램을 개발 중, 웹페이지 갱신마다 지속적으로
메모리가 증가하는 현상이 나타났다.

결국, 문제는 wglCreateContext()함수로 생성한 HGLRC를 wglDeleteContext() 호출을 하지 않고 그냥 App을 종료시킴으로 발생한 문제였다.

오래전에 구현한 소스라 신경쓰지 않고, 그냥 갖다 썼는데, 이렇게 큰 문제가 발생될 줄이라... 

아마도, 일반 App에서는 큰 문제가 발생되지 않을 수도 있을 것이다.  프로그램 시작할때, HGLRC를 생성하고 OpenGL 종료시점과 프로그램 종료시점이 같으므로, 메모리 릭이 발생되는 순간 프로그램도 종료되므로, 실제 큰 문제가 발생되지 않았을 것이다.

하지만, ActiveX의 경우, 컨테이너에서 지속적으로 페이지 "갱신"을 시키면, 새로운 컨텍스트가 계속 발생되므로 문제를 야기 시켰다. 

먹었으면 싸야하고, 생성했으면 지우는 것이 우주의 이치인 것을....    기본에 충실하자. !!! 

PS. 이놈의 크기가 생각보다 크다.  :   640 * 480 * 3 ( color depth)


Posted by 꿈을펼쳐라
,