Advertencia del compilador (nivel 1) C4722
Actualización: noviembre 2007
Mensaje de error
'función': el destructor nunca devuelve un valor, posible pérdida de memoria
'function' : destructor never returns, potential memory leak
El flujo de control finaliza en un destructor. El subproceso o el programa completo finalizará y es posible que no se liberen los recursos asignados. Además, si se llama a un destructor para desenredar la pila durante el procesamiento de excepciones, el comportamiento del ejecutable es indefinido.
Para solucionarlo, quite la llamada a la función que hace que el destructor no devuelva un valor.
Ejemplo
El ejemplo siguiente genera el error 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
}