std::allocator

hyenam·2022년 4월 21일
0

ft_containers

목록 보기
4/8

STL 컨테이너에서 사용할 메모리 모델을 정의하는 클래스.

메모리를 좀더 세밀하게 컨트롤을 할때 allocator를 사용한다.

템플릿 매개변수

  • T - 개체에 의해 할당된 요소의 타입(멤버 유형 value_type으로 별칭됨).

멤버 타입

typedef  T value_type;
typedef  T* pointer;
typedef  T& reference;
typedef  const T* const_pointer;
typedef  const T& const_reference;
typedef typename size_t size_type;
typedef typename ptrdiff_t difference_type;
typedef  _member class_ rebind<Type>;

멤버 함수

  • 생성자
default (1)	
allocator() throw();
copy (2)	
allocator (const allocator& alloc) throw();
template <class U>
  allocator (const allocator<U>& alloc) throw();

일반 allocator에는 인자가 없으며 초기화를 수행할 필요가 없지만 복사 생성자를 사용하려면 그들이 아무것도 하지 않더라도 세 개의 allocator 버전을 정의해야 합니다?.
(the three constructor versions must be defined (even if they do nothing) to allow for copy-constructions from allocator objects of other types. )

  • 소멸자
  • address - 레퍼런스 x의 주소를 반환한다. (typedef로 인해 reference로 별칭된 T&)
  • allocate - 멤버타입인 value_type 요소를 포함할 수 있을 만큼 큰 크기의 메모리를 할당하고 다음 첫 번째 요소의 포인터를 반환한다. 만약 할당할 수 없는 경우 bad_alloc를 반환한다.
  • deallocate - 메모리를 해제해주는 함수이다. 하지만 deallocate를 한다고 해도 안에 있는 요소는 파괴되지 않아 꼭 destroy를 한 후 deallocate를 해야한다.
  • max_size - 할당가능한 최대 사이즈를 반환한다. 이 반환값을 사용하여 메모리를 할당할수 없을 수 도 있다.
  • construct - 포인터 p가 가리키는 위치에 요소 객체를 저장한다. 이 함수로 메모리 할당은 불가능하서, 요소를 넣을 공간은 반드시 메모리 할당이 되어있어야 한다.
  • destroy - 요소를 파괴하는 함수이다. 요소를 파괴해도 공간이 해제되지는 않는다.

profile
공부한 걸 정리하고 있습니다.

0개의 댓글

관련 채용 정보