C6211
警告 C6211: 因例外狀況而造成遺漏的記憶體 <pointer>。 請考慮使用區域 catch 區塊清除記憶體
這項警告表示在擲回例外狀況時,並未釋放已配置的記憶體。 在路徑結尾的陳述式 (Statement) 可能會擲回例外狀況。
範例
下列程式碼將產生出這個警告:
#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 ...
}