C6211
تحذير C6211: leaking ذاكرة <مؤشر> سبب إلى استثناء. يمكنك استخدام حظر 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 ...
}