|
class A에서 TClientSocket을 멤버클래스로 가지고 있습니다
Class A생성자에서 TClientSocket을 생성(new)하고 Calss 소멸자에서 TClientSocket을 소멸(delete)하도록
되어 있습니다.
폼에서는 Class A를 멤버로 가지고 있으면서 동적으로 생성해야만 합니다.
//-- Form생성자에서 m_A에 NULL값으로 초기화 한 후
A* m_A == NULL;
특정 함수에서는 다음과 같이 코딩하였습니다
if(m_A) delete m_A;
m_A = new A;
위의 내용은 A클래스가 이미 생성되어 있으면 delete한 후 새로이 new를 해야하는 상황입니다.
그런데 위의 내용이 실행 될때는 첫번째는 정상 작동 되는데...다시 그 함수를 수행하게 되면
다운되는 현상이 발생합니다.
추측하건데 delete ClientSocket을 실행하면 TClientSocket이 완전히 소멸된 후 리턴되는 것이 아니라
Socket관련 소멸자가 쓰레드로 따로 돌면서 소멸이 되는것으로 추측됩니다.
따라서 delete m_A; 후 바로 new를 하게 되면 TClientSocket이 소멸되는 사이에 기존 포인터에 새로운
ClientSocket이 생성되면서 다운 현상이 나는 것으로 추정됩니다.
따라서 ClientSocket의 소멸자가 완전히 소멸되었는지를 확인할 수 있는 방법을 알고 싶습니다.
그러면 위와 같은 문제가 해결 될것으로 생각됩니다..
고수님들의 조언 부탁드립니다.
|