Freigeben über


C6211

C6211

Warnung C6211: Speicherverlust <Zeiger> infolge einer Ausnahme. Verwenden Sie einen lokalen Catch-Block, um den Arbeitsspeicher zu bereinigen.

Diese Warnung gibt an, dass der reservierte Arbeitsspeicher bei Auslösung einer Ausnahme nicht freigegeben wird. Die Anweisung am Ende des Pfads löst möglicherweise eine Ausnahme aus.

Beispiel

Der folgende Code generiert diese Warnung:

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

  delete[] p1;
  delete[] p2;
}

Um diese Warnung zu korrigieren, verwenden Sie den Ausnahmehandler, wie im folgenden Code dargestellt:

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

Siehe auch

Referenz

C++ Exception Handling