|
특별한 문제 없는데 Form Close시에 EInvalidPointer 에러 발생할 경우에는
해당 Form의 해더 파일에 선언된 배열중에 선언된 값을 오버에서 access한 경우
발생할 수 있습니다.
bool bCheck[10];
이렇게 선언해 두고 함수에서는
for(int i=0; i<20; i++) bCheck[i] = false;
이런 코드를 실행했다면 운좋에 실행 단계에서 Error가 안나더라도
잘못된 번지의 값들을 변경해 버렸기 때문에
Form Close 시에 포인터 에러가 발생할 가능성이 있습니다.
이런식의 Over Flow가 발생하는 코드가 있는지 확인해 보세요.
뚱이양아빠 님이 쓰신 글 :
: 다음 코드는 MDI 구조 프로그램 코드 중 일부를 발췌하여 담아봤습니다.
: 콜백 함수에서 TTestForm 의 함수를 접근해야 하는 문제로 인해
: 헤더부에 선언을 했습니다.
:
: 이를 생성 후 접근하게 하여 데이터가 넘어가는 것 까지 확인이 되었습니다.
: 하지만 문제가 발생했습니다.
:
: 콜백 함수가 호출 되지 않고 실행 후 초기에 종료시 문제가 없으나 콜백 함수가 호출 된 후
: 콜백 함수 종료, 그다음 프로그램 종료 명령 Button1Click 실행 시
:
: EInvalidPointer 에러 메시지가 나옵니다.
:
: mdi 관련 자료를 찾아보고 방법되로 해봐도 안된네요~
:
: 고수님들 답변 부탁드립니다.
: ===================================================================
: [헤더부]
: TTestForm *FTestViewForm;
:
: [구현부]
: void __fastcall TMainForm::CreateMDIChild()
: {
: FThermoViewForm = new TsThermoForm(Application);
: FThermoViewForm->Caption = "열화상 스크린";
: }
:
: ...
:
: void __fastcall TMainForm::Button1Click(TObject *Sender)
: {
: for(int i=0;i<MDIChildCount;i++)
: {
: this->MDIChildren[i]->Close();
: }
:
: // Application->Terminate();
:
: Close();
: }
|