Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::bad_array_new_length(3)  C++ Standard Libary std::bad_array_new_length(3)

NAME
       std::bad_array_new_length - std::bad_array_new_length

Synopsis
	  Defined in header <new>
	  class	bad_array_new_length;  (since C++11)

	  std::bad_array_new_length is the type	of the object thrown as	excep-
       tions by	the
	  new-expressions to report invalid array lengths if

	  1) array length is negative

	  2)  total  size of the new array would exceed	implementation-defined
       maximum value

	  3) the number	of initializer-clauses exceeds the number of  elements
       to initialize

	  Only	the  first array dimension may generate	this exception;	dimen-
       sions other than
	  the first are	constant expressions and are checked at	compile	time.

	  std-bad array	new length-inheritance.svg

					  Inheritance diagram

Member functions
	  constructor	constructs a new bad_array_new_length object
			(public	member function)
	  operator=	replaces the bad_array_new_length object
			(public	member function)
	  what		returns	the explanatory	string
			(public	member function)

       std::bad_array_new_length::bad_array_new_length

	  bad_array_new_length()				     noexcept;
       (1) (since C++11)
	  bad_array_new_length(	   const    bad_array_new_length&    other   )
       (2) (since C++11)
	  noexcept;

	  Constructs a new bad_array_new_length	object with an implementation-
       defined
	  null-terminated byte string which is accessible through what().

	  1) Default constructor.
	  2) Copy constructor. If *this	and other both have dynamic type
	  std::bad_array_new_length then std::strcmp(what(), other.what())  ==
       0.

Parameters
	  other	- another exception object to copy

       std::bad_array_new_length::operator=

	  bad_array_new_length&	operator=( const bad_array_new_length& other )
       (since C++11)
	  noexcept;

	  Assigns  the	contents  with those of	other. If *this	and other both
       have dynamic type
	  std::bad_array_new_length then std::strcmp(what(), other.what())  ==
       0 after
	  assignment.

Parameters
	  other	- another exception object to assign with

Return value
	  *this

       std::bad_array_new_length::what

	  virtual const	char* what() const noexcept;  (since C++11)

	  Returns the explanatory string.

Parameters
	  (none)

Return value
	  Pointer  to  a  null-terminated string with explanatory information.
       The string is
	  suitable for conversion and display as a std::wstring.  The  pointer
       is guaranteed to
	  be  valid  at	 least until the exception object from which it	is ob-
       tained is destroyed,
	  or until a non-const member function (e.g. copy assignment operator)
       on the
	  exception object is called.

Notes
	  Implementations are allowed but not required to override what().

       Inherited from std::bad_alloc

       Inherited from std::exception

Member functions
	  destructor   destroys	the exception object
	  [virtual]    (virtual	public member function of std::exception)
	  what	       returns an explanatory string
	  [virtual]    (virtual	public member function of std::exception)

Example
	  Three	conditions where std::bad_array_new_length should be thrown:

       // Run this code

	#include <iostream>
	#include <new>
	#include <climits>

	int main()
	{
	    try	{
		int negative = -1;
		new int[negative];
	    } catch(const std::bad_array_new_length &e)	{
		std::cout << "1) " << e.what() << ": negative size\n";
	    }

	    try	{
		int small = 1;
		new int[small]{1,2,3};
	    } catch(const std::bad_array_new_length &e)	{
		std::cout << "2) " << e.what() << ": too many initializers\n";
	    }

	    try	{
		long large = LONG_MAX;
		new int[large][1000];
	    } catch(const std::bad_array_new_length &e)	{
		std::cout << "3) " << e.what() << ": too large\n";
	    }

	    std::cout << "End\n";
	}

Possible output:
	1) std::bad_array_new_length: negative size
	2) std::bad_array_new_length: too many initializers
	3) std::bad_array_new_length: too large
	End

See also
	  operator new	 allocation functions
	  operator new[] (function)
	  bad_alloc	 exception thrown when memory allocation fails
			 (class)

http://cppreference.com		  2022.07.31	  std::bad_array_new_length(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::bad_array_new_length&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help