2013-07-25 1 views
8

C++ 및 표준 라이브러리에서 책을 읽는 동안 할당자를 자주 참조합니다. 예를 들어할당 자란 무엇이며 언제 할당자가 필요합니까?

는 니콜라 Josuttis에의 는 C++ 표준 라이브러리은 마지막 장에서 자세히를 설명하고 두 항목 (10) 및 사용자 정의 11 ("이해 합법적 인 사용 ("할당 자 '규칙 & 제한 사항을 알고 있어야 ") 할당 자 "라고 함)는 Scott Meyers의 Effective STL에 있습니다.

제 질문은 할당자가 특별한 메모리 모델을 어떻게 표현합니까? 기본 STL 메모리 관리가 충분하지 않습니까? 대신 할당자를 사용해야합니까?

가능한 경우 간단한 메모리 모델 예제로 설명하십시오.

+0

아마도 관련이 있습니다 : [커스텀 C++ STL 할당 자의 주목할만한 예는?] (http://stackoverflow.com/q/826569) –

답변

8

할당자는 추상 메모리를 할당하고 해당 메모리에서 객체를 생성/삭제합니다.

대부분의 경우 기본 할당자는 완벽합니다. 그러나 어떤 경우에는 다른 것으로 대체하여 효율을 높일 수 있습니다. 고전적인 예는 아주 작은 수의 객체를 많이 필요로하거나 할당하고 싶을 때입니다. 예를 들어 각각 12 바이트 정도의 문자열 벡터를 생각해보십시오. 정상 할당자는 operator new을 사용합니다.이 작은 개체에 대해서는 상당한 오버 헤드가 발생할 수 있습니다. 더 큰 메모리 덩어리를 할당하는 사용자 정의 할당자를 생성 한 다음 필요에 따라 하위 분류하면 메모리와 시간이 상당히 절약됩니다.