Como posso lidar com o sinal de interrupção e chamar destruidor em c ++? [duplicado

Possible Duplicate:
O destruidor é chamado se SIGINT ou SIGSTP for emitid

Meu código como este:

#include <iostream>
#include <signal.h>
#include <cstdlib>

void handler(int) {
    std::cout << "will exit..." << std::endl;
    exit(0);
}

class A {
public:
    A() {std::cout << "constructor" << std::endl;}
    ~A() {std::cout << "destructor" << std::endl;}
};

int main(void) {
    signal(SIGINT, &handler);

    A a;
    for (;;);

    return 0;
}

Quando pressionei Ctrl-C, ele imprimiu:

constructor
^Cwill exit...

Não há "destruidor" impresso. Então, como posso sair corretamente?

questionAnswers(10)

yourAnswerToTheQuestion