编译器警告(等级 1)C4722

“function”:析构函数永远不会返回,可能会发生内存泄漏

控制流在析构函数中终止。 该线程或整个程序将终止且分配的资源可能不会发布。 此外,如果在异常处理期间为堆栈展开调用了析构函数,则无法确定可执行文件的行为。

若要解决,请删除导致析构函数不能返回的函数调用。

示例

下面的示例生成 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
}