다음을 통해 공유


<allocators>

할당 및 노드 기반 컨테이너에 대 한 메모리 블록을 해제 하는 데 도움이 되는 몇 가지 서식 파일을 정의 합니다.

#include <allocators>

설명

<allocators> 노드 기반 컨테이너에 대 한 메모리 관리 전략을 선택 하는 데 사용할 수 있습니다 6 할당자 템플릿 헤더를 제공 합니다.이러한 템플릿 사용할 경우에 다른 다중 스레딩 구성표 없음 등의 다양 한 메모리 관리 전략에 맞게 여러 다른 동기화 필터를 제공 합니다.메모리 관리 전략 알려진된 메모리 사용 패턴 및 특정 응용 프로그램의 동기화 요구 사항에 일치 하는 속도 증가 하거나 응용 프로그램의 전체적인 메모리 요구 사항을 줄이는 경우가 있습니다.

할당자 템플릿 사용자 지정 하거나 추가 메모리 관리 전략을 제공 하는 대체 하는 재사용 가능한 구성 요소에 구현 됩니다.

노드 기반 컨테이너 (std::list, std::set, std::multiset, std::map 및 std::multimap)를 표준 C++ 라이브러리 요소 내의 개별 노드를 저장합니다.특정 컨테이너 형식에 대 한 모든 노드의 크기가 같은 이므로 범용 메모리 관리자의 유연성이 필요 하지 않습니다.각 메모리 블록의 크기는 컴파일 타임에 알 수 있기 때문에 훨씬 빠르고 메모리 관리자 수 있습니다.

노드 (표준 C++ 라이브러리 컨테이너 상의 std::deque 및 std::basic_string) 기반 된 컨테이너를 사용 하면 alllocator 템플릿 제대로 작동 하지만 기본 할당 자가 통해 모든 성능 향상 가능성이.

할당자는 저장소 할당 및 해제 개체와 지정 된 형식의 개체를 관리 하는 개체를 설명 하는 템플릿 클래스입니다.표준 C++ 라이브러리에서 컨테이너 템플릿 클래스를 여러 개체 할당 자가 사용 됩니다.

할당자는 이러한 종류의 모든 템플릿은 다음과 같습니다.

template<class Type>

class allocator;

여기서 템플릿 인수 Type 할당자 인스턴스에서 관리 되는 형식입니다.표준 C++ 라이브러리 기본 할당자, 템플릿 클래스를 제공 할당자에 정의 된 <memory>.<allocators> 머리글 다음 할당자를 제공합니다.

다음 코드 예제와 같은 컨테이너를 만들 때 두 번째 형식 인수로 할당자의 적절 한 인스턴스를 사용 합니다.

#include <list>

#include <allocators>

std::list<int, stdext::allocators::allocator_chunklist<int> > _List0;

_List0 노드를 할당 allocator_chunklist 및 기본 동기화 필터.

매크로 사용 ALLOCATOR_DECL (<allocators>) 할당자 템플릿 기본값 이외의 동기화 필터를 만들려면:

#include <list>

#include <allocators>

ALLOCATOR_DECL(CACHE_CHUNKLIST, stdext::allocators::sync_per_thread, Alloc);

std::list<int, alloc<int> > _List1;

_Lst1 노드를 할당 allocator_chunklist , sync_per_thread 동기화 필터.

블록 할당자는 캐시 또는 필터입니다.캐시 형식 std::size_t의 한 인수를 사용 하는 템플릿 클래스입니다.단일 크기의 메모리 블록을 할당 하 고 할당 블록 할당자를 정의 합니다.연산자를 사용 하 여 메모리를 얻어야 합니다 new, 연산자에 대 한 별도 호출 수 해야 new 각 블록에 대 한.예를 들어, 큰 블록 또는 블록 이후 재할당에 할당 되는 캐시를 다시 할당할 수 있습니다.

Rebind 템플릿을 인스턴스화할 때 사용 되는 std::size_t 인수 값 아닐 컴파일할 수 없습니다 컴파일러에서는 캐시의 멤버 함수에 전달 된 인수 _Sz 값 할당 및 할당 취소 합니다.

<allocators> 다음 캐시 템플릿을 제공합니다.

필터 템플릿 인수로 전달 되는 다른 블록 할당자를 사용 하 여 멤버 함수를 구현 하는 블록 할당자입니다.가장 일반적인 필터는 동기화 블록 할당자 다른 인스턴스의 멤버 함수에 대 한 액세스 제어 정책을 적용 하는 동기화 필터입니다.<allocators> 다음 동기화 필터를 제공합니다.

<allocators> 또한 필터를 제공 rts_alloc, 여러 블록 할당자 보유 하 고 인스턴스 및 인스턴스 대신 런타임에 컴파일 타임에 할당 취소 할당의 사용을 결정 합니다.Rebind 컴파일할 수 없습니다 컴파일러와 함께 사용 합니다.

동기화 정책 할당자 인스턴스가 여러 스레드에서 동시 할당 및 할당 취소 요청을 처리 하는 방법을 결정 합니다.간단한 정책 동기화 관리 사용자에 게 그대로 두고 내부 캐시 개체를 통해 직접 모든 요청을 전달 하는 것.복잡 한 정책 뮤텍스 액세스 내부 캐시 개체를 serialize 하는 데 사용할 수 있습니다.

모두 단일 스레드 및 멀티스레드 응용 프로그램을 컴파일하는 컴파일러를 지 원하는 경우 단일 스레드 응용 프로그램에 대 한 기본 동기화 필터는 sync_none. 다른 모든 경우에 대 한 것이 sync_shared.

캐시 템플릿을 cache_freelist 사용 가능한 목록에 저장 될 요소의 최대 수를 결정 하는 최대 클래스 인수를 사용 합니다.

<allocators> 다음 최대 클래스를 제공합니다.

Ee292134.collapse_all(ko-kr,VS.110).gif매크로

ALLOCATOR_DECL (<allocators>)

할당자는 템플릿 클래스를 생성합니다.

CACHE_CHUNKLIST (<allocators>)

Yields stdext::allocators::cache_chunklist<sizeof(Type)>.

CACHE_FREELIST (<allocators>)

Yields stdext::allocators::cache_freelist<sizeof(Type), max>.

CACHE_SUBALLOC (<allocators>)

Yields stdext::allocators::cache_suballoc<sizeof(Type)>.

SYNC_DEFAULT (<allocators>)

동기화 필터를 생성합니다.

Ee292134.collapse_all(ko-kr,VS.110).gif연산자

operator!= (<allocators>)

할당자 객체는 지정 된 클래스의 다른 지 테스트 합니다.

operator== (<allocators>)

할당자 객체는 지정 된 클래스의이 같은지 테스트 합니다.

Ee292134.collapse_all(ko-kr,VS.110).gif클래스

allocator_base

기본 클래스 및 사용자 지정 할당자에서 동기화 필터를 만드는 데 필요한 공통 기능을 정의 합니다.

allocator_chunklist

저장소 할당 및 해제 종류의 캐시를 사용 하 여 개체에 대 한 관리 개체 설명 cache_chunklist.

allocator_fixed_size

저장소 할당 및 해제 형식의 개체에 대 한 관리 개체 설명 Type 종류의 캐시를 사용 하 여 cache_freelist 관리 길이가 max_fixed_size.

allocator_newdel

사용 하 여 할당자 구현 operator delete 메모리 할당을 블록 및 operator new 메모리 블록을 할당할 수 있습니다.

allocator_suballoc

저장소 할당 및 해제 형식의 개체에 대 한 관리 개체 설명 Type 종류의 캐시를 사용 하 여 cache_suballoc.

allocator_unbounded

저장소 할당 및 해제 형식의 개체에 대 한 관리 개체 설명 Type 종류의 캐시를 사용 하 여 cache_freelist 관리 길이가 max_unbounded.

allocator_variable_size

저장소 할당 및 해제 형식의 개체에 대 한 관리 개체 설명 Type 종류의 캐시를 사용 하 여 cache_freelist 관리 길이가 max_variable_size.

cache_chunklist

단일 크기의 메모리 블록을 할당 하 고 할당 블록 할당자를 정의 합니다.

cache_freelist

단일 크기의 메모리 블록을 할당 하 고 할당 블록 할당자를 정의 합니다.

cache_suballoc

단일 크기의 메모리 블록을 할당 하 고 할당 블록 할당자를 정의 합니다.

자유 목록

메모리 블록의 목록을 관리합니다.

max_fixed_size

제한 하는 최대 클래스 개체에 설명 된 자유 목록 개체에 고정 된 최대 길이.

max_none

제한 하는 최대 클래스 개체에 설명 된 자유 목록 개체에 최대 길이가 0.

max_unbounded

설명의 최대 길이 제한 하는 최대 클래스 개체는 자유 목록 개체입니다.

max_variable_size

제한 하는 최대 클래스 개체에 설명에 자유 목록 개체 수에 거의 비례 하는 최대 길이 메모리 블록을 할당 합니다.

rts_alloc

Rts_alloc 템플릿 클래스에 설명에 필터 는 보유 캐시 배열 인스턴스 및 인스턴스 할당 및 대신 런타임에 할당 컴파일 타임에 결정 합니다.

sync_none

동기화를 제공 하는 동기화 필터에 설명 합니다.

sync_per_container

각 할당자 객체에 대해 별도 캐시 개체를 제공 하는 동기화 필터에 설명 합니다.

sync_per_thread

각 스레드에 대 한 별도 캐시 개체를 제공 하는 동기화 필터에 설명 합니다.

sync_shared

뮤텍스를 사용 하 여 모든 할당자에서 공유 하는 캐시 개체에 액세스를 제어 하는 동기화 필터에 설명 합니다.

요구 사항

헤더: <allocators>

네임 스페이스: stdext

참고 항목

기타 리소스

헤더 파일