|
안녕하세요 heredity입니다.
상황은 여러가지가 있을 수 있지만(사용중인 DLL에 손상을 입었거나 설치 프로그램을 잘못 제거했다거나...),
대부분 사용자가 작성한 프로그램에 오류가 있는 경우가 많습니다.
아래 코드는
1. 할당되지 않은 Pointer 변수를 참조한 경우,
2. NULL Pointer를 할당한 경우 및
3. 해제된 메모리를 참조한 경우
입니다.
특히 3번의 경우가 제일 범하기 쉬운 경우입니다(멀티 쓰레드 프로그램을 작성할 경우엔 정말 많이 발생하죠 ^^;;)
천천히 님이 작성한 프로그램의 소스를 분석해 보세요. 좋은 결과가 있을 겁니다.
즐~
//---------------------------------------------------------------------------
// 1
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int nStr = 100;
PCHAR pchStr;
memset( pchStr, 'A', nStr - 1 );
}
//---------------------------------------------------------------------------
// 2
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int nStr = 100;
PCHAR pchStr = NULL;
memset( pchStr, 'A', nStr - 1 );
}
//---------------------------------------------------------------------------
// 3
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int nStr = 100;
PCHAR pchStr = new char [nStr];
memset( pchStr, 'A', nStr - 1 );
pchStr[nStr - 1] = '\0';
delete pchStr;
memset( pchStr, 'A', nStr - 1 );
pchStr[nStr - 1] = '\0';
}
공윤경 님이 쓰신 글 :
: 프로젝트 SMARTMon.exe가 EAccess violation 클래스의 예외를 발생했습니다. '주소 00454 A27로 주소 0000014 C에 대한 읽기 위반이 일어났습니다. '프로세스는 정지하고 있습니다. 재개하려면 스텝 실행 또는 실행을 선택해 주세요
:
: 에러메세지가 이런게 떠요
:
:
: 공윤경 님이 쓰신 글 :
: : 지금 메신저에 등록했거든요...
: : 접속하셨을때 보내드릴께요.
: : 수야!╋ 님이 쓰신 글 :
: : : 말씀하신 부분의 자체적인 문제는 없습니다.
: : :
: : : 말씀해주신 상황데로 테스트 해봤는데요
: : :
: : : 문제는 발생되지 않는군요..
: : :
: : : 메인폼의 OnShow와 OnCreate 부분을 확인해볼만 할것 같군요
: : :
: : : 영 안된다 싶고 소스를 제가 봐도 된다면 한번 보고싶네요
: : :
: : : 소스를 봐도 되면 <- 메신저 추가해주세요
: : : MSN : sooya23@hanmail.net
: : :
: : :
: : :
: : : 공윤경 님이 쓰신 글 :
: : : : :
: : : : : Application->Initialize();
: : : : : Application->ShowMainForm = false;
: : : : : Application->CreateForm(__classid(TFrmMain), &FrmMain);
: : : : : FrmMain->Visible=false; <-----이부분
: : : : : Application->Run();
: : : :
: : : : TrayIcon을 위해 소스에 추가한 부분은 없는데요...
: : : : 이미지리스트, 팝업, 트레이아이콘 이렇게 세개를 썼구요.
: : : : 디폴트로 되어있는값 그래로에 오른쪽 마우스버튼 누르면 팝업이 뜨게 한건데요...
: : : : 실행하고나서 오른쪽 마우스버튼을 누르니까 그런 에러가 뜨네요
: : : :
: : : : 이부분에서
: : : : Application->ShowMainForm = false;
: : : : 이게 문제가 될수도 있나요?
: : : : 이걸 지웠더니 에러가 안나는데 ^^;
: : : : 문제는 이놈을 지웠더니 트레이아이콘이랑 메인폼이 같이 떠서요...
: : : : 별짓다해도 같이 뜨네요. Visible을 true로 했다 false로 했다가...ㅠㅠ
: : : :
: : : : 오늘아참 담당자가 메일로
: : : : "간단한 일만 남았습니다.트레이아이콘을 써서 프로그램을 바꿔주세요.프로그램 실행시 테스크트레이에 아이콘이 생기고 그걸 이용해 실행시키기만 하면 되는겁니다."
: : : : 해서
: : : : 넹...
: : : : 그러고 지금 이러고 있어요.
: : : : 저에겐 간단하지가 않네요 으흐흑
|