1. El sistema llama a std :: exit () para indicar el final del proceso. Se llama al destructor para el objeto construido (llamar a exit () en un destructor se repetirá infinitamente).
std :: exit (0); Devuelve 0 al sistema, lo que indica que el programa finaliza normalmente.
std :: exit (0); Devuelve 1 al sistema, lo que indica que el programa finaliza de forma anormal.
2. El programa std :: abort () finaliza de forma anormal y no se llamará al destructor:
#define debug qDebug()<<
struct ceshi
{
~ceshi()
{
debug "ceshi 析构";
}
};
int main(int argc, char *argv[])
{
ceshi c;
std::abort();
debug "hello";
}
3. El parámetro de std :: atexit (void (* fun) (void)) es un puntero de función, que apunta a una función sin parámetros y sin valor de retorno La función especificada se puede ejecutar antes de la terminación. Se llamará al destructor, y el orden de destrucción es: el post-destructor definido antes de std :: atexit (), y el primer destructor definido después de std :: atexit ():
#define debug qDebug()<<
struct ceshi
{
~ceshi()
{
debug "ceshi 析构" << a;
}
int a;
};
void debugValue()
{
debug "hello world";
}
int main(int argc, char *argv[])
{
ceshi c1;
c1.a = 88;
std::atexit(debugValue);
ceshi c2;
c2.a = 66;
debug "hello";
}
4. std :: quick_exit () es similar a exit () pero no llama al destructor.