C6211
警告 C6211: 例外によりメモリ リーク <ポインター> が発生しています。 メモリをクリーンアップするには、ローカルの catch ブロックを使用してください
この警告は、例外がスローされたときに、割り当てられたメモリが解放されないことを示します。 パスの末尾のステートメントが例外をスローした可能性があります。
使用例
この警告が発生するコード例を次に示します。
#include <new>
void f( )
{
char *p1 = new char[10];
char *p2 = new char[10];
// code ...
delete[] p1;
delete[] p2;
}
この警告を解決するには、次のコードに示すように例外ハンドラーを使用します。
#include<new>
#include<iostream>
using namespace std;
void f( )
{
char *p1=NULL;
char *p2=NULL;
try
{
p1 = new char[10];
p2 = new char[10];
// code ...
delete [] p1;
delete [] p2;
}
catch (bad_alloc &ba)
{
cout << ba.what() << endl;
if (NULL != p1)
delete [] p1;
if (NULL !=p2)
delete [] p2;
}
// code ...
}