이는 foobar는 힙에 생성 된 클래스가있다. 죽을 때 응용 프로그램을 종료하고 싶습니다. die() 함수를 호출하면 죽어야합니다. 힙에 생성 된 일부 개인 속성이 있습니다. 또한 삭제해야합니다.
Foobar::Foobar()
{
m_var = new int(1);
}
Foobar::~Foobar()
{
delete m_var;
exit(0);
}
void Foobar::die()
{
delete this;
}
문제는 delete this
일치한다 : 그 코드를 썼다. 전화를 걸면 Foobar::~Foobar()
을 부를 것인가, 그렇지 않습니까?
P. 더 나은 해결책이 있다면 제안하십시오.
직접'delete'를 호출하는 대신'die' 함수를 사용해야하는 이유는 무엇입니까? –
운영 체제는 프로세스가 종료 될 때 힙 메모리를 회수하지만보다 일반적으로 명시 적으로 릴리스해야하는 리소스 유형이 있지만이 디자인의 더 나은 근거가됩니다. –
@KarthikT 예. 나는 Qt를 사용하고 die '에 추가 코드가 있기 때문에 호출되어야한다. 또한 실행되어야한다. –