Aviso do compilador (nível 1) C4722
'function' : destruidor nunca retorna, potencial vazamento de memória
O fluxo de controle termina em um destruidor. O thread ou todo o programa será encerrado e os recursos alocados não poderão ser liberados. Além disso, se um destruidor for chamado para o desenrolamento da pilha durante o processamento de exceções, o comportamento do executável será indefinido.
Para resolver, remova a chamada de função que faz com que o destruidor não retorne.
Exemplo
A seguinte amostra gera C4722:
// C4722.cpp
// compile with: /O1 /W1 /c
#include <stdlib.h>
class C {
public:
C();
~C() { exit(1); }; // C4722
};
extern void func (C*);
void Test(){
C x;
func(&x);
// control will not leave Test because destructor will exit
}