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
}