共用方式為


C6211

警告 C6211: 因例外狀況而造成遺漏的記憶體 <pointer>。 請考慮使用區域 catch 區塊清除記憶體

這項警告表示在擲回例外狀況時,並未釋放已配置的記憶體。 在路徑結尾的陳述式 (Statement) 可能會擲回例外狀況。

範例

下列程式碼將產生出這個警告:

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

  delete[] p1;
  delete[] p2;
}

若要更正這項警告,請使用例外處理常式,如下列程式碼所示:

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

請參閱

參考

C++ Exception Handling