|
안녕하세요.
아래와 같이 쓰레드를 생성하고 나서.
버튼을 클릭하면 TSori 쓰레드가 생성되고 이놈은 소리만 연주하고
바로 Terminate();를 호출하여 쓰레드를 죽이고 있는 구조 입니다.
첫번째 질문 : 생성자에서 FreeOnTerminate = true; 로하면 스레드가 죽고나서
모든 쓰레드에 관한 리소스는 반납을 합니까 ?
두반째 질문 : "TSori = new TSound("SD_3");" 이 부분이 의문이 가는데
통상적으로 new로 동적으로 객체를 생성하면 끝나면 delete TSori;를 해야 하지 않습니까?
그냥 계속 ::Button1Click(this)를 수십번 반복해도 이상이 없던데 이렇게 사용해도 문제가 없습니까?
부탇드립니다. 좋은 날 되세요.
TSound *TSori;
void __fastcall TFSMSSend::Button1Click(TObject *Sender)
{
TSori = new TSound("SD_3");
}
//---------------------------------------------------------------------------
// 쓰레드
//-------------------------------- -------------------------------------------
class TSound : public TThread
{
private:
char name[20];
protected:
void __fastcall Execute();
public:
__fastcall TSound(char *p);
};
__fastcall TSound::TSound(char *sori)
: TThread(false)
{
memset(name,0,20);
strcpy(name,sori);
FreeOnTerminate = true;
}
//---------------------------------------------------------------------------
void __fastcall TSound::Execute()
{
if(bDllLoad)
PlasyWave(WaveDllInstance,name) ;
Terminate();
}
|