FreeBSD Manual Pages
std::set_new_handler(3) C++ Standard Libary std::set_new_handler(3) NAME std::set_new_handler - std::set_new_handler Synopsis Defined in header <new> std::new_handler set_new_handler( std::new_handler new_p ) throw(); (until C++11) std::new_handler set_new_handler( std::new_handler new_p ) noexcept; (since C++11) Makes new_p the new global new-handler function and returns the pre- viously installed new-handler. The new-handler function is the function called by allocation func- tions whenever a memory allocation attempt fails. Its intended purpose is one of three things: 1) make more memory available 2) terminate the program (e.g. by calling std::terminate) 3) throw exception of type std::bad_alloc or derived from std::bad_alloc. The default implementation throws std::bad_alloc. The user can in- stall his own new-handler, which may offer behavior different than the default one. If new-handler returns, the allocation function repeats the previ- ously-failed allocation attempt and calls the new-handler again if the allocation fails again. To end the loop, new-handler may call std::set_new_handler(nullptr): if, after a failed allocation attempt, allocation function finds that std::get_new_han- dler returns a null pointer value, it will throw std::bad_alloc. At program startup, new-handler is a null pointer. This function is thread-safe. Every call to std::set_new_handler synchronizes-with (see std::memory_order) the subsequent (since C++11) std::set_new_handler and std::get_new_handler calls. Parameters new_p - pointer to function of type std::new_handler, or null pointer Return value The previously-installed new handler, or a null pointer value if none was installed. Example // Run this code #include <iostream> #include <new> void handler() { std::cout << "Memory allocation failed, terminating\n"; std::set_new_handler(nullptr); } int main() { std::set_new_handler(handler); try { while (true) { new int[1000'000'000ul](); } } catch (const std::bad_alloc& e) { std::cout << e.what() << '\n'; } } Possible output: Memory allocation failed, terminating std::bad_alloc See also operator new allocation functions operator new[] (function) get_new_handler obtains the current new handler (C++11) (function) new_handler function pointer type of the new handler (typedef) bad_alloc exception thrown when memory allocation fails (class) http://cppreference.com 2022.07.31 std::set_new_handler(3)
NAME | Synopsis | Parameters | Return value | Example | Possible output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::set_new_handler&sektion=3&manpath=FreeBSD+Ports+15.0>
