# std::nothrow

From cppreference.com
< cpp‎ | memory‎ | new

Defined in header `<new>` |  |
extern const std::nothrow_t nothrow; |  |

`std::nothrow` is a constant of type std::nothrow_t used to disambiguate the overloads of throwing and non-throwing allocation functions.

### Example

Run this code

    #include <iostream>
    #include <new>

    int main()
    {
        try {
            while (true) {
                new int[100000000ul];   // throwing overload
            }
        } catch (const std::bad_alloc& e) {
            std::cout << e.what() << '\n';
        }

        while (true) {
            int* p = new(std::nothrow) int[100000000ul]; // non-throwing overload
            if (p == nullptr) {
                std::cout << "Allocation returned nullptr\n";
                break;
            }
        }
    }

Output:

    std::bad_alloc
    Allocation returned nullptr

### See also

nothrow_t | tag type used to select an non-throwing allocation function (class)
operator new operator new[] | allocation functions (function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/new/nothrow&oldid=58340"