new 연산자에서 메모리 할당에 실패했을 경우, NULL포인터가 return된다.
이는 C++의 과거 표준이다. 현재 새로운 표준에 대한 정보는 header파일에 bad_alloc예외가 전달된다고 한다.
MS VC++ 컴파일러는 MSDN에서 아래와 같이 지원한다고 명시되어 있다.
http://msdn2.microsoft.com/ko-kr/library/6512dwes(en-us,VS.80).aspx
이는 C++의 과거 표준이다. 현재 새로운 표준에 대한 정보는 header파일에 bad_alloc예외가 전달된다고 한다.
MS VC++ 컴파일러는 MSDN에서 아래와 같이 지원한다고 명시되어 있다.
http://msdn2.microsoft.com/ko-kr/library/6512dwes(en-us,VS.80).aspx
The class describes an exception thrown to indicate that an allocation request did not succeed.
class bad_alloc : public exception { bad_alloc(const char *_Message): exception(_Message) {} bad_alloc(): exception("bad allocation", 1) {} virtual ~bad_alloc() {} };
Remarks
An instance of bad_alloc can be constructed from a message or from a message string with no memory allocation.
The value returned by what is an implementation-defined C string. None of the member functions throw any exceptions.
Requirements
Header: <new>
Example
// bad_alloc.cpp // compile with: /EHsc #include<new> #include<iostream> using namespace std; int main() { char* ptr; try { ptr = new char[(~unsigned int((int)0)/2) - 1]; delete[] ptr; } catch( bad_alloc &ba) { cout << ba.what( ) << endl; } }
Sample Output
bad allocation
Requirements
Header: <new>
See Also