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
}