c++ bad_alloc 예외 처리

‍박소연·2022년 9월 5일

new 동적 메모리 할당

char* pChar = new Char[10];
if(pChar != nullptr)
{
	..
    return;
}

이와 같이 메모리를 할당하고 할당 여부를 체크하기 위한 널 포인터 검사를 통해 예외 처리를 한다.

메모리 할당이 실패하는 경우

new 연산자를 통한 메모리 할당이 실패할 경우는 예외가 발생하여 프로그램이 즉시 종료된다.

즉, null 포인터 체크로는 new 연산자에 대한 예외처리를 할 수 없다.

std::bad_alloc

new 연산자가 메모리 할당에 실패한 경우에 나타나는 문제

int ea, workNum;
for(int j = 1; j <= ea; j++)
{
	cin >> workNum;
    node[i].push_back(workNum);
}

ea라는 변수를 선언하고 cin으로 받아야 하는데 받지 않아 초기화되지 않은 ea로 인해 ea에는 쓰레기 값이 들어가게 되고 이로 인해 node라는 벡터에 계속해서 값들이 push_back 되어 힙 메모리 부족 현상이 발생했다.

0개의 댓글