Std::allocator
할당자는 C++의 표준 라이브러리에서 메모리 할당을 관리하는 객체이다. C++표준 라이브러리에서 이용되는 리스트, 셋 등의 다양한 컨테이너 자료구조들은 용도에 따라 동적 메모리 할당을 요구한다. 할당자는 동적 메모리 할당을 통합 관리하는데 필요한 기능이 정의된 객체이다.
Category
- std::allocator:Pool: STL Allocator 의 메모리 풀링.
Example
#include <memory>
#include <iostream>
#include <string>
int main()
{
    std::allocator<int> a1; // default allocator for ints
    int* a = a1.allocate(10); // space for 10 ints
    a[9] = 7;
    std::cout << a[9] << '\n';
    a1.deallocate(a, 10);
    // default allocator for strings
    std::allocator<std::string> a2;
    // same, but obtained by rebinding from the type of a1
    decltype(a1)::rebind<std::string>::other a2_1;
    // same, but obtained by rebinding from the type of a1 via allocator_traits
    std::allocator_traits<decltype(a1)>::rebind_alloc<std::string> a2_2;
    std::string* s = a2.allocate(2); // space for 2 strings
    a2.construct(s, "foo");
    a2.construct(s + 1, "bar");
    std::cout << s[0] << ' ' << s[1] << '\n';
    a2.destroy(s);
    a2.destroy(s + 1);
    a2.deallocate(s, 2);
}
Allocator library
See also
Favorite site
- Wikipedia (en) Allocator (C++)
- cppreference.com: std::allocator
- C++ Standard Allocator, An Introduction and Implementation
- MSDN: allocator::allocate
- Viper Wiki: STL / 할당자
- Allocator의 필수 조건과 rebind
- Stackoverflow: Why doesn't this C++ STL allocator allocate?
- STL Custom Allocator (kor)