|
수성 님이 쓰신 글 :
: 먼저 답변에 감사 드립니다.
:
: 메모리해제문제...
:
: 그렇다면...다음의 코드에서 문제가 있는지 말씀해 주십시오
:
: for (i=0;i<9;i++)
: {
: LaneNum = i;
: for (j=0;j<3;j++)
: {
: temp = i*3+j+1;
: if (Lee){ delete Lee; Lee = NULL; }
: if (MainForm->bm){ delete MainForm->bm; MainForm->bm = NULL; }
: Lee = new TLee();
: MainForm->bm = new Graphics::TBitmap();
: MainForm->bm->LoadFromFile("C:\\B"+IntToStr(temp)+".bmp");
: Lee->LoadToClass(MainForm->bm);
: A(j);
: }
: B();
: }
:
: for (i=0;i<9;i++)
: {
: LaneNum = i;
: for (j=0;j<3;j++)
: {
: temp = i*3+j+1;
: if (Lee){ delete Lee; Lee = NULL; }
: if (MainForm->bm){ delete MainForm->bm; MainForm->bm = NULL; }
: Lee = new TLee();
: MainForm->bm = new Graphics::TBitmap();
: MainForm->bm->LoadFromFile("C:\\B"+IntToStr(temp)+".bmp");
: Lee->LoadToClass(MainForm->bm);
: C();
: D();
: }
: }
: if (Lee){ delete Lee; Lee = NULL; }
: if (MainForm->bm){ delete MainForm->bm; MainForm->bm = NULL; }
:
: 클래스 TLee 자체에 문제가 있는건지...아니면...수차례 반복된 객체 생성과 해제에 있는지...
: 의견을 듣고 싶습니다.
: 참고로...에러 메시지 발생시점은 총54번 루프중 36번째에서 발생합니다...
유엔아이 현입니다.
뭐 보기엔 특별한 문제는 못 찾을것 같군요~ 또, 박복된 객체 생성과 해제가 문제가 될수도 있으나
뭐 54번 루프중 36 번째라 ... 별 문제가 않될것 같고요~ 하지만~~ 만약 ... 로드하는 객체의
크기가 크다라면은 문제가 될소지는 있지만 .. 암튼 제가 보기에는 그건 아닌것 같구요~
다른쪽에서 문제가 있을수도 있으니~
이렇게 해보시지요~
// Lee = new TLee();
: MainForm->bm = new Graphics::TBitmap();
: MainForm->bm->LoadFromFile("C:\\B"+IntToStr(temp)+".bmp");
// Lee->LoadToClass(MainForm->bm);
이런식으로 .. 한쪽을 막아 보싶시요~
또
: MainForm->bm = new Graphics::TBitmap();
: MainForm->bm->LoadFromFile("C:\\B"+IntToStr(temp)+".bmp");
이것의 경우도 매번 new Graphics::TBitmap(); 이렇게 할당 하지 마식고
루프 전단에서 한번만 할당 해도 될거 같은되여~
MainForm->bm->LoadFromFile("C:\\B"+IntToStr(temp)+".bmp");
이 아마도 비트맵에 대한 메모리가 할당 되있으면 해제하고 다시 잡을 테니깐 ...
구지 new Graphics::TBitmap(); 를 매번 하지 않아도 될듯 ...
그럼 ./...
|