C6211
Actualización: noviembre 2007
C6211
Advertencia C6211: Pérdida de memoria <puntero> debido a una excepción. Considere utilizar un bloque catch local para limpiar la memoria
Esta advertencia indica que la memoria asignada no se libera cuando se inicia una excepción. La instrucción del final de la ruta de acceso podría iniciar potencialmente una excepción.
Ejemplo
El código siguiente genera esta advertencia:
#include <new>
void f( )
{
char *p1 = new char[10];
char *p2 = new char[10];
// code ...
delete[] p1;
delete[] p2;
}
Para corregir esta advertencia, utilice el controlador de excepciones como se muestra en el código siguiente:
#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 ...
}