Spec-Zone.ru › C++

std::allocator_traits<Alloc>::max_size

Определён в заголовке <memory>
static size_type max_size( const Alloc& a ) noexcept;
(начиная с C++11)
(constexpr начиная с C++20)

Если возможно, получает максимальный теоретически возможный размер выделения памяти у аллокатора a, вызывая a.max_size().

Если это невозможно (например, Alloc не имеет функции-члена max_size()), возвращает std::numeric_limits<size_type>::max() / sizeof(value_type).

Параметры

a - аллокатор для проверки

Возвращаемое значение

Теоретически максимальный размер выделения памяти.

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение согласно опубликованному стандарту Корректное поведение
LWG 2162 C++11 max_size не требовалось иметь спецификацию noexcept требовалось
LWG 2466 C++11 теоретически максимальный размер выделения памяти в байтах возвращался в качестве запасного значения возвращается размер в элементах

Пример

#include <iostream>
#include <memory>
#include <locale>

int main()
{
    std::allocator<short> b;
    std::allocator<int> d;

    const auto p = std::allocator_traits<decltype(b)>::max_size(b);
    const auto 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';
}

Возможный вывод:

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

См. также

max_size
(до C++20)
возвращает наибольший поддерживаемый размер выделения памяти
(открытая функция-член std::allocator<T>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/allocator_traits/max_size

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API