|
어차피 저도 제가 겪었던 일이 아닐까 싶어서 말씀드리는 거니 참고만 하시면 좋을 듯 합니다.
보여주신 이미지는 access violation이 맞는 것 같고요.
아시다시피 VCL 컴포넌트들은 owner를 설정하는 것으로 되어 있습니다.
(맞을 겁니다. parent 였나?)
그리고 역시 아시다시피 VCL 객체가 해제될 때 자신을 owner로 해놓은 자식 객체까지 같이 해제합니다.
저도 비슷한 경우, 즉 종료시 access violation이 뜨는 경우가 있어서 뜯어 봤더니, 이미 제가 delete한 객체의 onwer가 delete 되면서 access violation이 일어나는 경우를 본 적이 있습니다.
제 경우에는 이 모듈, 저 모듈로 해당 객체의 포인터를 넘기고 다니면서 발생한 일이었는데요.
확인해 보시면 좋을 듯 하네요.
어떤 경우이던지 간에 이미 소멸된 객체를 소멸하고 하는 경우일 거라 생각되네요.
명시적이건 묵시적이건 간에 해당 객체가 할당해제 되는 포인트들을 중심으로 원인을 찾아보시면 어떨까 합니다.
기본도 잘 모르는 사 님이 쓰신 글 :
: :
: : 얼핏 보기에는 이미 delete 한 객체를 다시 delete 한 건 아닌 가 싶습니다.
: : 제 경우에는 암시적으로 delete된 객체를 명시적으로 다시 delete해서 access violation이 뜨는 경우가 제법 있었습니다.
: : 해당 컴포넌트의 버그가 아닌 이상에는 소멸자에서 오류가 나는 경우라면 그 정도가 아닐까 생각됩니다.
: : 어떤 오류가 발생했는지도 말씀해주셨다면 좋을 뻔했네요.
: ayh 님이 쓰신 글을 보고 저의 짧은 소견으로
:
: 제가 만든 OCX라고 생각하고 그 부분을 테스트 해보았습니다.
: 하지만 그부분은 문제가 없고
: 제가 현재 신경이 쓰이는 부분이 쓰레드로 정적으로 DLL을 참고하여 사용 중입니다.
: 그 부분이 혹시 문제가 될수 있나요?
: 만약 동적으로 변경하면 해결 될수 있을까요?
:
: 무엇인가 잘못 참조하는것 같습니다. 확인 부탁드립니다.
: 만약 메세지라도 숨기는 기능은 없을까요??
: 이미지를 첨부해 보았습니다.
|