- scoped_allocator[meta header]
- std[meta namespace]
- scoped_allocator_adaptor[meta class]
- function[meta id-type]
- cpp11[meta cpp]
void deallocate(pointer p, size_type n);
メモリを解放する。
allocator_traits
<OuterAlloc>::
deallocate
(
outer_allocator()
, p, n)
#include <iostream>
#include <vector>
#include <string>
#include <scoped_allocator>
template <class T>
using alloc_t = std::allocator<T>;
// コンテナの要素(Inner)
using string = std::basic_string<
char,
std::char_traits<char>,
alloc_t<char>
>;
// コンテナ(Outer)
template <class T>
using vector = std::vector<
T,
std::scoped_allocator_adaptor<alloc_t<T>, alloc_t<typename T::value_type>>
>;
int main()
{
vector<string>::allocator_type alloc {
alloc_t<string>(), // vector自体のアロケータオブジェクト
alloc_t<char>() // vectorの全ての要素に使用するアロケータオブジェクト
};
// 外側のアロケータを使用し、stringが3要素入るメモリを確保
const std::size_t n = 3;
string* p = alloc.allocate(n);
// メモリを解放
alloc.deallocate(p, n);
}
- deallocate[color ff0000]
- alloc.allocate[link allocate.md]
- C++11
- Clang: 3.0 [mark verified]
- GCC: 4.7.3 [mark verified]
- ICC: ??
- Visual C++: ??