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 ...
}

راجع أيضًا:

المرجع

C++ Exception Handling