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


Предупреждение компилятора (уровень 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
}