|
유영인님이 답변을 올려 놓았는데, 제가 조금 첨부해서 올립니다.
제가 보기에는,
문제의 원인은 메모리가 세고 있어서 (좀더 자세히 설명하면, 프로그램이 종료처리루틴을 따라 가는데, 메모리에서 지워야 할 것이 있는데, 이것을 포인터하던 것이 지금 현재는 엉뚱한 것을 포인터하고 있어, 혹은 아에 포인터가 없어져서 이걸 찾는다고 컴퓨터가 오도방정을 떨다가 결국에는 나도 몰라 하고 .... -___-a. [참고] 프로그램이 무응답인 경우는 어떤 프로세스가 무한정 프로세스타입을 잡고 있어 다른 프로세스가 반응 못할 경우 발생, 무한 for문을 돌려 놓고(for문 내에 Application->ProcessMessages ();를 사용안한 경우) 한참후에 작업관리자를 보면 무응답으로 표시됨) 그런 것 같고, 메모리가 세는 것에 의하여 프로그램이 논리적인 오류가 많이 발생하는 것 같습니다.
만약 정말 메모리가 세는 것 같다면...
(메모리 세는 것은 소스코드를 보아야 하는데....)일단 의심하실 것은 각 개념간의 쌍을 이루는 것이 제대로 되었는지를 확인해 보시고요 (Windows API를 이용하셨다면 GetDC | ReleaseDC 등). 두번째로 의심해야 할 것은 반복문 내에서 new 등을 이용하여 메모리 할당을 받은 것이 없는지 확인해 보시고요. 그리고 그리기 루틴도 많이 반복되는 루틴(OnShow, OnActive이벤트 처리함수)이니 의심해 보시고요.
가장 확실한 방법은 소스코드를 올려 주시면 여러 고수분들이 잘못된 점을 바로 알려 주실 거에여.
알고싶은이... 님이 쓰신 글 :
: Action = caFree; 으로 해도 똑 같은데요...T.T
:
: 프로그램을 실행하구 한 2-3분안에 종료하면 아무 이상 없지만
:
: 프로그램을 좀더 시간이 흐르고 종료를 시키면 화면 상에는 아무것도 안보이지만
:
: 다시한번 프로그램을 실행하면 '더블 실행'이란 표현이 나오구
:
: CTRL+ALT+DEL을 누르고 작업관리자(98에서는 그냥 바로 화면이 나오지만)에 들어가면
:
: 그프로그램이 계속 실행중인 걸루 나오구 몇번 더 누르고 확인하면 "무응답"이란
:
: 글이 나오거든요....그래서 결국 다시 실행하려면 작업관리자에서 삭제를 해야
:
: 프로그램이 종료 됩니다.... 쓰레드가 계속 실행중인거 같은데...
:
: 종료시킬 방법이 없을까요...강제로 라도....
:
:
:
|