Usando setjmp/longjmp
Não use setjmp e longjmp em programas do C++; Essas funções não oferecem suporte a semântica de objeto C++.Além disso, usando essas funções em programas de C++ pode degradar o desempenho, impedindo que a otimização de variáveis locais.Use a manipulação de exceção de C++ try/catch constrói em vez disso.
Se você precisar usar setjmp/longjmp em um programa C++, a interação entre essas funções e a manipulação de exceção de C++ requer que você incluir SETJMP.H ou SETJMPEX.H.Destruidores para objetos locais serão chamados durante a pilha desenrolar se você compilar com /EH.Se você compila com/EHs e uma das suas funções chamam uma função que usa nothrow, e se a função que usa nothrow chamadas longjmp, o desenrolamento de destruidor pode não ocorrer, dependendo o otimizador.
Além disso, se você pretende que seu código seja portátil, não confie na destruição correta de objetos com base no quadro ao executar um goto não local usando uma chamada para longjmp.