Namespaces
Variants
Actions

std::allocator_traits<Alloc>::max_size

From cppreference.com
 
 
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*)
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)
 
 
Defined in header <memory>
static size_type max_size(const Alloc& a )noexcept;
(since C++11)
(constexpr since C++20)

If possible, obtains the maximum theoretically possible allocation size from the allocator a, by calling a.max_size().

If the above is not possible (e.g., Alloc does not have the member function max_size()), then returns std::numeric_limits<size_type>::max()/ sizeof(value_type).

Contents

[edit]Parameters

a - allocator to detect

[edit]Return value

Theoretical maximum allocation size.

[edit]Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 2162C++11 max_size was not required to be noexcept required
LWG 2466C++11 theoretical maximum allocation size in bytes was returned as fallback size in elements is returned

[edit]Example

#include <iostream>#include <memory>#include <locale>   int main(){std::allocator<short> b;std::allocator<int> d;   constauto p =std::allocator_traits<decltype(b)>::max_size(b);constauto q =std::allocator_traits<decltype(d)>::max_size(d);   std::cout.imbue(std::locale("en_US.UTF-8"));std::cout<<std::uppercase<<"p = "<<std::dec<< p <<" = 0x"<<std::hex<< p <<'\n'<<"q = "<<std::dec<< q <<" = 0x"<<std::hex<< q <<'\n';}

Possible output:

p = 9,223,372,036,854,775,807 = 0x7,FFF,FFF,FFF,FFF,FFF q = 4,611,686,018,427,387,903 = 0x3,FFF,FFF,FFF,FFF,FFF

[edit]See also

(until C++20)
returns the largest supported allocation size
(public member function of std::allocator<T>)[edit]
close