|
저도 착각 하고 있는것 같기는 한데..
로그를 확인해 보니.. 도저히 이해가 안되서.. ^^;;
이리 저리 검토 중입니다.
님말씀데로 생성자 소멸자에 에서도 로그를 남겨 한번 확인해볼 필요가 있겠네요 ^^
답변 감사드립니다.
빌더초보 님이 쓰신 글 :
: 질문1.
:
: ServerStart() 함수에 ServerEnd()가 있기 때문에 두번 생성 될 수가 없을텐데요?
: 아마 생성이 두번 된 것 처럼 동작 한다고 착각 하는 다른 뭔가가 있는 것 같네요.
:
: 그래도 확인 하고 싶다면,
:
: FHost_ps 변수 자체로는 중복 생성인지 아닌 확인 할 수 없을 거고,
:
: int CreateCount=0;
: int DestroyCount=0;
:
: 이렇게 전역 변수를 두고, TFHost_ps의 생성자에
: CreateCount++;
:
: 소멸자에
: DestroyCount++;
:
: 를 넣어서 테스트 해보는 방법도 괜찮을 것 같습니다.
:
:
:
: 질문2.
:
: 생성시점에 포인터를 구분해 놓지 않는 이상
: 같은 변수에 중복 생성된 놈들은 모두 삭제 불가능한걸로 알고 있습니다.
: 그래서 질문자께서 사용한 방법 같이 생성 직전에 소멸하고 포인터를 초기화 하는 거죠.
:
: 친구 님이 쓰신 글 :
: : 소켓 통신할때 보통
: : 아래 처럼 사용하는데요
: :
: : void __fastcall TForm::ServerStart()
: : {
: : ServerEnd();
: : FHost_ps = new TFHost_ps(ClientSocket);
: : ClientSocket->Active = true;
: : }
: : void __fastcall TForm::ServerEnd()
: : {
: : if(ClientSocket->Active) ClientSocket->Active = false;
: : if(FHost_ps)
: : {
: : delete FHost_ps;
: : FHost_ps = NULL;
: : }
: : }
: :
: : 가끔 이상하게 생성이 2번 된것처럼 동작 하는것 같아서요
: :
: : 만약
: : FHost_ps = new TFHost_ps(ClientSocket);
: : FHost_ps = new TFHost_ps(ClientSocket);
: : 이렇게 그냥 2번 했을 경우
: :
: : 질문1.
: : 2개가 생성됬는지 어떻게 확인 할수 있어요??
: :
: : 질문2.
: : 2개다 delete 하고 싶은데 어떻게 하죠?
: :
: :
: :
: :
|