C6211
警告 C6211:由于出现异常,正在泄漏内存 <pointer>。 应考虑使用局部 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 ...
}