|
질문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 하고 싶은데 어떻게 하죠?
:
:
:
:
|