A special case of out_of_memory errors thrown when a low-level allocator with a fixed size runs out of memory.
For example, thrown by fixed_block_allocator or static_allocator.
It is derived from out_of_memory but does not provide its own handler.
◆ handler
The type of the handler called in the constructor of out_of_memory.
When an out of memory situation is encountered and the exception class created, this handler gets called. It is especially useful if exception support is disabled. It gets the allocator_info and the amount of memory that was tried to be allocated.
- Required Behavior:
- It can log the error, throw a different exception derived from
std::bad_alloc
or abort the program. If it returns, this exception object will be created and thrown.
- Default Behavior:
- On a hosted implementation it logs the error on
stderr
and continues execution, leading to this exception being thrown. On a freestanding implementation it does nothing.
- Note
- It is different from
std::new_handler
; it will not be called in a loop trying to allocate memory or something like that. Its only job is to report the error.
◆ out_of_fixed_memory()
◆ what()
const char * what |
( |
| ) |
const |
|
overridenoexcept |
- Returns:
- A static NTBS that describes the error. It does not contain any specific information since there is no memory for formatting.
◆ set_handler()
- Effects:
- Sets
h
as the new handler in an atomic operation. A nullptr
sets the default handler.
- Returns:
- The previous handler. This is never
nullptr
.
◆ get_handler()
- Returns:
- The current handler. This is never
nullptr
.
◆ allocator()
◆ failed_allocation_size()
std::size_t failed_allocation_size |
( |
| ) |
const |
|
noexceptinherited |
- Returns:
- The amount of memory that was tried to be allocated. This is the value passed in the constructor.