Compartir a través de


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

Vea también

Referencia

C++ Exception Handling