Bad allocation exceptions in C++
In a school project of mine I was requested to create a program not using STL.
In the program I use alot of
Pointer* = new Something; if (Pointer == NULL) throw AllocationError();
My question is about allocation errors:
1. is there an automatic exception thrown by new when allocation fails?
2. if so how can I catch it if I'm not using STL (
3. is using the NULL testing enugh?
I'm using eclipseCDT(C++) with MinGW on windows 7.
Yes, the new operator will automatically thrown an exception if it cannot allocate the memory.
Unless your compiler disables it somehow, the new operator will never return a NULL pointer.
It throws a
Also there is a
nothrow version of new that you can use:
int *p = new(nothrow) int(3);
This version returns a null pointer if the memory cannot be allocated. But also note that this does not guarantee a 100%
nothrow, because the constructor of the object can still throw exceptions.
Bit more of information: http://msdn.microsoft.com/en-us/library/stxdwfae(VS.71).aspx