ExpertiDict

C++ · Avançado · Inglês · Técnico

stack unwinding

stæk ʌnˈwaɪndɪŋsubstantivo

Processo de desfazer a pilha de chamadas quando uma exceção é lançada, destruindo na ordem inversa os objetos locais de cada frame até encontrar um catch compatível.

Onde usar

É o que torna o RAII seguro com exceções: destrutores liberam recursos durante o desenrolar. Em code review, um destrutor que lança durante esse processo termina o programa.

Em código

struct G { ~G() { std::cout << "limpa "; } };
void f() { G g; throw 1; }
int main() {
  try { f(); }
  catch (int) { std::cout << "pego"; }
}   // imprime: limpa pego

Exemplos

During stack unwinding the destructors of all locals run.

Durante o stack unwinding, os destrutores de todas as locais rodam.

A destructor that throws during stack unwinding calls terminate.

Um destrutor que lança durante o stack unwinding chama terminate.

Cuidado

Se nenhuma captura for encontrada, é definido pela implementação se a pilha chega a ser desenrolada antes de std::terminate.

Sinônimos

desenrolar da pilha

Veja também

Todos os termos de C++