다음을 통해 공유


C6211

경고 C6211: 예외로 인해 <pointer> 메모리 누수가 발생하고 있습니다. 로컬 catch 블록을 사용하여 메모리를 정리하십시오.

이 경고는 할당된 메모리가 예외가 throw될 때 해제되지 않고 있음을 나타냅니다. 경로의 끝에 있는 문에서 예외를 throw했을 수 있습니다.

예제

다음 코드에서는 이 경고를 발생시킵니다.

#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