Avviso del compilatore (livello 1) C4722

'function': il distruttore non restituisce mai un valore, potenziale perdita di memoria

Il flusso di controllo termina in un distruttore. Viene terminato il thread o l'intero programma e le risorse allocate potrebbero non essere rilasciate. Inoltre, se viene chiamato un distruttore per la rimozione dello stack durante l'elaborazione delle eccezioni, il comportamento dell'eseguibile è indefinito.

Per risolvere questo problema, rimuovere la chiamata di funzione che impedisce la restituzione di valori del distruttore.

Esempio

L'esempio seguente genera l'errore 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
}