- memory[meta header]
- std[meta namespace]
- allocator[meta class]
- function[meta id-type]
- cpp17deprecated[meta cpp]
- cpp20removed[meta cpp]
size_type max_size() const throw(); // C++03
size_type max_size() const noexcept; // C++11
この関数は、C++17から非推奨となり、C++20で削除された。代わりにstd::allocator_traits
::
max_size()
関数を使用すること。
一度に確保可能なメモリの最大サイズを取得する。
allocate
(N, 0)
が成功するであろう最大のN
を返す。
多くのメンバ関数は、アロケータの実装によらず、共通に定義できるものだった。そのため、アロケータの中間インタフェースであるstd::allocator_traits
クラスに、共通のデフォルト実装を定義することとなった。
特殊なアロケータの実装では、この関数を独自に実装する必要があるかもしれない。その場合はstd::allocator_traits
のデフォルト機能を使用せずに、この関数を独自アロケータのインタフェースとして定義すれば、std::allocator_traits
クラスを介してインタフェースにアクセスしたとしても、その独自実装が使用される。
少なくとも、std::allocator
クラスのあらゆる標準ライブラリの実装において、この関数は特殊な動作をする必要がないため、std::allocator_traits
クラスのデフォルト実装に任せることとなった。
#include <iostream>
#include <memory>
int main()
{
std::allocator<int> alloc;
std::cout << alloc.max_size() << std::endl;
}
- max_size()[color ff0000]
4611686018427387903