답변감사합니다. ^^
남병철.레조 님이 쓰신 글 :
: 빌더 메인 쓰레드는 try ~ catch 구분으로 둘러쌓여있습니다.
: 쓰레드를 생성해서 그런 액세스바이얼레이션을 보고 싶으시다면
: 빌더 프로젝트.cpp 파일의 try ~ catch 구분을 복사해 보세요.
: 쓰레드는 자신만의 스택메모리 영역을 가지고 실행되는 일종의 독립 영역입니다.
: (책에 자세한 설명이 많을 것이니 참고하세요. :))
:
:
:
: 시녕tm 님이 쓰신 글 :
: : 안녕하세요.
: : Form위에 버튼을 하나 두고 버튼을 클릭시 NULL Pointer에다가 값을 쓰도록하여
: : 강제적으로 access violation error를 발생해 보았습니다.
: : 이 경우에는 실행파일을 직접 실행할 경우 버튼을 누르면
: : Access violation at address 004...... 어쩌고 하고 윈도우 에러 창이 실행되는데요
: : Thread 의 Execute() 에서 버튼에서와 동일하게 강제로 access violation error를
: : 발생 시키면 Access violation at address .... 하고 뜨는 윈도우 에러 창이
: : 뜨지않고 Thread 가 그냥 소리 없이 죽습니다.
: : 어찌하여 Thread에서는 Access violation 에러를 발생 시켜도 에러 윈도우가
: : 안뜨는 것인지 궁금합니다.
: :
: : 테스트 소스도 압축하여 첨부합니다.
: :
: :
: : void __fastcall MyThread::Execute()
: : {
: : //---- Place thread code here ----
: : int nNumber = 0;
: : int *pPointer = NULL;
: :
: : while(!Terminated){
: : ::Sleep(10);
: :
: : if(nNumber > 10){
: : pPointer = 1000; // 강제로 NULL Pointer에 값을 쓰도록하여 error 발생.
: : }
: :
: : nNumber++;
: : }
: : }
: : |