- memory[meta header]
- std[meta namespace]
- allocator_traits[meta class]
- function[meta id-type]
- cpp11[meta cpp]
static pointer allocate(Alloc& a, size_type n); // (1) C++17 まで
[[nodiscard]] static constexpr pointer allocate(Alloc& a, size_type n); // (1) C++20 から
static pointer allocate(Alloc& a, size_type n,
const_void_pointer hint); // (2) C++17 まで
[[nodiscard]] static constexpr pointer allocate(Alloc& a, size_type n,
const_void_pointer hint); // (2) C++20 から
メモリを確保する。
- (1) :
a.allocate(n)
- (2) :
a.allocate(n, hint)
という式が有効であればそれを呼び出し、そうでなければa.allocate(n)
を呼び出す。
#include <memory>
int main()
{
std::allocator<int> alloc;
using traits = std::allocator_traits<decltype(alloc)>;
// 10要素のint領域を確保する
std::size_t n = 10;
int* p = traits::allocate(alloc, n);
// 確保したメモリを解放する
traits::deallocate(alloc, p, n);
}
- allocate[color ff0000]
- traits::deallocate[link deallocate.md]
- C++11
- Clang: 3.0
- GCC: 4.7.3
- ICC: ??
- Visual C++: 2012, 2013