C6211
Aggiornamento: novembre 2007
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 ...
}