Namespaces
Variants

std:: bad_alloc

From cppreference.net
< cpp ‎ | memory ‎ | new
Utilities library
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Definido en el encabezado <new>
class bad_alloc : public std:: exception

std::bad_alloc es el tipo del objeto lanzado como excepción por las funciones de asignación para reportar fallo al asignar almacenamiento.

cpp/error/exception std-bad alloc-inheritance.svg

Diagrama de herencia

Contenidos

Funciones miembro

(constructor)
construye un nuevo objeto bad_alloc
(función miembro pública)
operator=
reemplaza el objeto bad_alloc
(función miembro pública)
what
devuelve la cadena explicativa
(función miembro pública)

std::bad_alloc:: bad_alloc

(1)
bad_alloc ( ) throw ( ) ;
(hasta C++11)
bad_alloc ( ) noexcept ;
(desde C++11)
(constexpr desde C++26)
(2)
bad_alloc ( const bad_alloc & other ) throw ( ) ;
(hasta C++11)
bad_alloc ( const bad_alloc & other ) noexcept ;
(desde C++11)
(constexpr desde C++26)

Construye un nuevo objeto bad_alloc con una cadena de bytes terminada en nulo definida por la implementación, accesible a través de what() .

1) Constructor por defecto.
2) Constructor de copia. Si * this y other tienen ambos tipo dinámico std::bad_alloc entonces std:: strcmp ( what ( ) , other. what ( ) ) == 0 . (desde C++11)

Parámetros

other - otro objeto de excepción a copiar

std::bad_alloc:: operator=

bad_alloc & operator = ( const bad_alloc & other ) throw ( ) ;
(hasta C++11)
bad_alloc & operator = ( const bad_alloc & other ) noexcept ;
(desde C++11)
(constexpr desde C++26)

Asigna los contenidos con los de other . Si * this y other ambos tienen tipo dinámico std::bad_alloc entonces std:: strcmp ( what ( ) , other. what ( ) ) == 0 después de la asignación. (desde C++11)

Parámetros

other - otro objeto de excepción con el cual asignar

Valor de retorno

* this

std::bad_alloc:: what

virtual const char * what ( ) const throw ( ) ;
(hasta C++11)
virtual const char * what ( ) const noexcept ;
(desde C++11)
(constexpr desde C++26)

Devuelve la cadena explicativa.

Valor de retorno

Puntero a una cadena terminada en nulo definida por la implementación con información explicativa. La cadena es adecuada para conversión y visualización como std::wstring . Se garantiza que el puntero será válido al menos hasta que se destruya el objeto de excepción del cual se obtiene, o hasta que se llame a una función miembro no constante (por ejemplo, el operador de asignación de copia) en el objeto de excepción.

La cadena devuelta está codificada con la codificación literal ordinaria durante la evaluación constante.

(desde C++26)

Notas

Se permite a las implementaciones, pero no se requiere, sobrescribir what() .

Heredado de std:: exception

Funciones miembro

[virtual]
destruye el objeto de excepción
(función miembro pública virtual de std::exception )
[virtual]
devuelve una cadena explicativa
(función miembro pública virtual de std::exception )

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_constexpr_exceptions 202411L (C++26) constexpr para tipos de excepción

Ejemplo

#include <iostream>
#include <new>
int main()
{
    try
    {
        while (true)
        {
            new int[100000000ul];
        }
    }
    catch (const std::bad_alloc& e)
    {
        std::cout << "Allocation failed: " << e.what() << '\n';
    }
}

Salida posible:

Allocation failed: std::bad_alloc

Véase también

funciones de asignación
(función)