C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[43952] Re:Re:쓰레드 생성 및 소멸
freeman [builder88] 1671 읽음    2006-03-06 21:41
바쁘신중에  답을 주셔서 정말 감사합니다.
아래 소스처름   Terminate();를 호출하면 쓰레드가 종료 되면서 자체 메모리가 해제되고,
따라서    쓰레드를 동적으로 생성한 것 =>  TSori = new  TSound("SD_3");
요놈은 delete TSori 가 할 필요가 없군요.
정말 감사합니다.


외랑 님이 쓰신 글 :
: 첫번째 답변 : FreeOnTerminate를 True로 두시면 쓰레드가 종료(죽고나서 라는 것은 의미파악이 애매합니다. 중단인지 종료인지, 에러인지.. *^^*)되면 즉 Terminate시에 Free하라는 거죠.. 자체 메모리 해제입니다.
: 두번째 답변 : 자체 메모리 해제 안하면...당연히 delete 하셔야 하겠죠.. 문제 없습니다.
:
:
: freeman 님이 쓰신 글 :
: : 안녕하세요.
: : 아래와 같이 쓰레드를 생성하고 나서.
: : 버튼을 클릭하면 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();
: : }

+ -

관련 글 리스트
43938 쓰레드 생성 및 소멸 freeman 1278 2006/03/06
43943     Re:쓰레드 생성 및 소멸 외랑 1381 2006/03/06
43952         Re:Re:쓰레드 생성 및 소멸 freeman 1671 2006/03/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.