Поделиться через


Предупреждение компилятора (уровень 1) C4722

"функция": деструктор не возвращает ресурсы, возможна утечка памяти

Замечания

Поток управления завершается в деструкторе. Поток или вся программа завершится, и выделенные ресурсы могут не освободиться. Кроме того, если деструктор будет вызван для очистки стека во время обработки исключения, поведение исполняемого файла может быть неопределенным.

Для решения проблемы удалите вызов функции, являющийся причиной невозвращения деструктора.

Пример

В следующем примере создается 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
}