コンパイラの警告 (レベル 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
}