Namespaces
Variants

std::allocator_traits<Alloc>:: max_size

From cppreference.net
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)
헤더 파일에 정의됨 <memory>
static size_type max_size ( const Alloc & a ) noexcept ;
(C++11부터)
(C++20부터 constexpr)

가능한 경우, 할당자 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로 지정되지 않음 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

참고 항목

(until C++20)
지원되는 최대 할당 크기를 반환합니다
( std::allocator<T> 의 public member function)