|
조경달 님이 쓰신 글 :
: //잘 돌다가 마우스를 움직이거나 하면 시스템 리소스가 없다고 하니....
:
:
: while(1) //이 스레드는 계속 캡춰만 합니다.
: {
: HDC dc = GetDC(0);
: Graphics::TCanvas *ScreenCanvas = new Graphics::TCanvas;
: Bitmap= new Graphics::TBitmap;
: ScreenCanvas->Handle=dc;
: Bitmap->Height=Screen->Height;
: Bitmap->Width=Screen->Width;
: while(1)
: {
: Sleep(1000);
: sx=sy=0;
: lx=Screen->Width/2;
: ly=Screen->Height/2;
:
: rect = Rect(0,0,lx-sx,ly-sy);
: rect2 = Rect(sx,sy,lx,ly);
: Bitmap->Canvas->CopyRect(rect,ScreenCanvas,rect2);
:
: tmsFull->Position=0;
: TJPEGImage *jp = new TJPEGImage();
: try
: {
: jp->Assign(Bitmap);
: jp->SaveToStream(tmsFull);
: }
: __finally
: {
: delete jp;
: }
: }//while(1)
:
:
안녕하세요 ..
님의 소스에는 무한 루프내에 new로 생성한 객체가 3군데 정도 있습니다
그런데 생성만 하지 해제 하는 곳이 없네요
루프속에서 계속 메모리를 잡아먹으니
리소스가 부족메시지가 나오지 싶군요
Bitmap이나 JpgImage는 스레드 생성자에서 멤버변수로 생성하고
소멸자에서 delete하시고
화면 DC는 굳이 TCanvas에 매핑하지 말고 그대로 사용하셔도 될듯하네요^^
그럼~~ 즐푸하시길.
|