2009-12-10 8 views

답변

2

This answer이 소멸자가 호출되지 나타냅니다 말한다.

0

signal(3) 매뉴얼 페이지에는 기본이 긴장하지 않는 것을 나에게 제안

No Name   Default Action  Description 
... 
6  SIGABRT  create core image abort program (formerly SIGIOT) 

...

1

아니요, 예외 만 스택 되감기를 트리거합니다. 신호는 C API 인 POSIX의 일부이므로 예외와 같은 C++ 기능을 "인식하지"못합니다.

4

번호 :

$ cat test.cc 
#include <iostream> 
#include <sys/types.h> 
#include <signal.h> 

class Test { 
public: 
    ~Test() { std::cout << "~Test called" << std::endl; } 
}; 

int main(int argc, char *argv[]) 
{ 
    Test t = Test(); 
    if (argc > 1) { 
     kill(0, SIGABRT); 
    } 
    return 0; 
} 
$ g++ test.cc 
$ ./a.out 
~Test called 
$ ./a.out 1 
Aborted 
0

신호 SIGABRT 얼마 응용 프로그램을 실행의 코어 파일을 만드는 데 사용됩니다. 우리는이 신호를 응용 프로그램을 디버깅하는 데 사용합니다. 그리고 제가 아는 한 소멸자는이 신호에 의해 호출되지 않습니다.