Title: | C++ |
Notice: | Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS) |
Moderator: | DECCXX::AMARTIN |
Created: | Fri Nov 06 1987 |
Last Modified: | Thu Jun 05 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 3604 |
Total number of notes: | 18242 |
Hello, I have a question related to the behaviour of the new operator when the memory allocation fails: In the ANSI C++ Working Paper (Nov 96), I read that the new operators are defined as throwing the bad_alloc exception: void* operator new(std::size_t) throw(std::bad_alloc); void* operator new[](std::size_t) throw(std::bad_alloc); and in the section describing storage duration (3.7.3.1 bullet 3): " 3 An allocation function that fails to allocate storage can invoke the currently installed new_handler (_lib.new.handler_). [Note: A pro- gram-supplied allocation function can obtain the address of the cur- rently installed new_handler using the set_new_handler function (_lib.set.new.handler_). ] If a nothrow allocation function (_lib.support.dynamic_) fails to allocate storage, it shall return a null pointer. Any other allocation function that fails to allocate storage shall only indicate failure by throwing an exception of class std::bad_alloc (_lib.bad.alloc_) or a class derived from std::bad_alloc. " Would this mean that if we use the standard new operator, a new will never return a null pointer and we can remove from our code tests such as: p = new T(...) if (p == NULL) { // throw my insuf memory exception } Is this behaviour already available and if not, in which version of the compiler is it planned, V5.6, V6.0 ? Thanks and regards, Marc.
T.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
3439.1 | a little wait | HNDYMN::MCCARTHY | A Quinn Martin Production | Mon Feb 10 1997 05:56 | 13 |
>>Would this mean that if we use the standard new operator, a new will never >>return a null pointer and we can remove from our code tests such as: [ snip ] Yes. >>Is this behaviour already available and if not, in which version of the >>compiler is it planned, V5.6, V6.0 ? Not yet. V6.0 Brian J. | |||||
3439.2 | Thanks | TAEC::FLAUW | Marc Flauw, TeMIP Technical Office, VBO | Mon Feb 10 1997 06:02 | 5 |
Thanks, Brian. That was quick. /marc. |