VCL에 보면 TThread 라는 클래스가 있습니다.
이 클래스는
생성후 FreeOnTerminate = true;
해주면 이 클래스의 실행이 종료되는 시점에서 스스로 메모리에서 뿅~ 하고 사라집니다.
무슨 도사도 아닌데 스스로 없어지죠. 리소스와 메모리도 다 반환하고 ...
이런거 만드는 것은 생각보다 쉽습니다.
스스로 소멸되도록 delete this; 문을 종료해야할 시점에서 불러주면 그만입니다.
아래는 예제입니다.
//---------------------------------------------------------------------------
void __fastcall TForm1::Test()
{
class T : public TObject
{
char *buf;
public:
__fastcall T()
{
buf = new char[10000000];
}
__fastcall ~T()
{
delete[] buf;
}
void Resume()
{
// do something...
;
// self delete code.
delete this;
}
};
T* temp = new T;
temp->Resume();
}
//---------------------------------------------------------------------------
TThread 처럼 생성시켜 실행만 해주면
실행이 끝남과 동시에 메모리에서 사라집니다.
델파이의 경우도 방법은 같답니다.
너무 쉬운가요...
|
이거랑 스마트 포인터랑 어떤 연관이 있는가요? ^^