Just recently I switched the language of my project to use C++ from C.
With C, I used malloc and after that I check if malloc was successful but with C++, I use 'new' to allocate memory and I would like to know how you would normally check the memory allocation failure.
From my google search, I saw nothrow like the following.
char *buf = new (nothrow)char[10];
I also saw the following.
try{} catch(bad_alloc&) {}
But what about the following? I am using some of chrome library routines to use smart pointers.
For instance, I have the code as follows.
scoped_array<char> buf(new char[MAX_BUF]);
It is great to use smart pointers but I am just not sure how I should check if the memory allocation was successful.
Do I need to break into two separate statement with nothrow or try/catch?
How do you normally do these checks in C++?
Any advice will be appreciated.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…