Condividi tramite


C6211

avviso C6211: Perdita di memoria <puntatore> a causa di un'eccezione. Si consiglia di utilizzare un blocco catch locale per pulire la memoria

L'avviso indica che la memoria allocata non viene liberata quando si genera un'eccezione. L'istruzione alla fine del percorso potrebbe potenzialmente generare un'eccezione.

Esempio

Il codice seguente genera questo avviso:

#include <new>
void f( )
{
  char *p1 = new char[10];
  char *p2 = new char[10];
  // code ...

  delete[] p1;
  delete[] p2;
}

Per risolvere il problema, utilizzare il gestore eccezioni come riportato nel codice seguente:

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

Vedere anche

Riferimenti

C++ Exception Handling