std::bad_array_new_length
De cppreference.com
| Definido en el archivo de encabezado <new>
|
||
class bad_array_new_length;
|
(desde C++11) | |
std::bad_array_new_length es el tipo del objeto lanzado como una excepción por las expresiones new para reportar longitudes de arrays inválidas si
1) la longitud del array es negativa;
2) el tamaño total del nuevo array excedería el valor máximo definido por la implementación;
3) el número de cláusulas de inicializadores excede el número de elementos a inicializar.
Solamente la primera dimensión del array puede generar esta excepción; otras dimensiones distintas de la primera son expresiones constantes y se comprueban en tiempo de compilación.
Inheritance diagram
Sumario
Funciones miembro
Construye el objeto bad_array_new_length. (función miembro pública) |
Heredado de std::bad_alloc
Heredado de std::exception
Funciones miembro
[virtual] |
Destruye el objeto excepción. (función miembro virtual pública de std::exception)
|
[virtual] |
Devuelve una cadena aclaratoria. (función miembro virtual pública de std::exception)
|
Notas
La redefinición de la función miembro virtual what() puede proporcionarse, pero no se requiere.
Ejemplo
Tres condiciones donde std::bad_array_new_length debería lanzarse:
Ejecuta este código
#include <iostream>
#include <new>
#include <climits>
int main()
{
int negativo = -1;
int chico = 1;
int grande = INT_MAX;
try {
new int[negativo]; // tamaño negativo
new int[chico]{1,2,3}; // demasiados inicializadores
new int[grande][1000000]; // demasiado grande
} catch(const std::bad_array_new_length &e) {
std::cout << e.what() << '\n';
}
}
Posible salida:
std::bad_array_new_length
Véase también
| Funciones de asignación. (función) | |
| Excepción que se produce cuando la asignación de memoria falla. (clase) |