In previous programs I have used the following code to check for memory allocation failures, usually without thinking about alternatives:
int* p_int = new int[10];
if(!p_int)
{
// We failed, so exit
return EXIT_FAILURE;
}
This method is also documented here.
I found here a reference for the syntax:
p_int = (nothrow) new int[10];
Which suggests that if the programmer does not include the nothrow
"argument" to new, then the check for nullptr
is invalid? Is this correct? Or is it OS dependent?
As I understand it, there is little point putting new
in a try-catch
block unless you can actually recover from it because of the overhead associated with this. Is this also correct?
Checking for
nullptr
after anew
is useless because a failednew
does not set the pointer tonullptr
Rather a failed
new
willthrow
astd::bad_alloc
, so if you want to try to deal with it, you need totry
andcatch