Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"function" : destruktor nigdy nie zwraca, potencjalny wyciek pamięci
Uwagi
Przepływ sterowania kończy się w destruktorze. Wątek lub cały program zakończy działanie i przydzielone zasoby nie zostaną zwolnione. Ponadto jeśli destruktor zostanie wywołany do odwijania stosu podczas przetwarzania wyjątków, zachowanie pliku wykonywalnego jest niezdefiniowane.
Aby rozwiązać ten problem, usuń wywołanie funkcji, które powoduje, że destruktor nie zwraca.
Przykład
Poniższy przykład generuje 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
}