Partager via


C6211

avertissement C6211 : mémoire <pointeur> manquante liée à une exception. Si possible, utilisez un bloc catch local pour nettoyer la mémoire

Cet avertissement indique que la mémoire allouée n'est pas libérée lorsqu'une exception est levée. L'instruction contenue à la fin du chemin d'accès peut potentiellement lever une exception.

Exemple

Le code suivant génère cet avertissement :

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

  delete[] p1;
  delete[] p2;
}

Pour corriger cet avertissement, utilisez un gestionnaire d'exceptions comme indiqué dans le code suivant :

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

Voir aussi

Référence

C++ Exception Handling