STL 할당자를 사용하는 컨테이너 클래스를 작성하려고합니다. 내가 현재 할 것은 개인 회원내 컨테이너 클래스에 std :: allocator를 사용하는 방법
std::allocator<T> alloc_;
을 (사용자가 다른 할당을 선택할 수 있도록이 나중에 템플릿한다)가 다음 새로에 대한 포인터를 얻을 수
T* ptr = alloc_.allocate(1,0);
를 호출하는 것입니다 할당 된 'T'객체 (그리고 생성자를 호출하는 alloc_.construct를 사용; 아래 답변 참조). 이것은 GNU C++ 라이브러리에서 작동합니다.
그러나 솔라리스에서 STLPort를 사용하면 올바른 작업을 수행하지 못하고 모든 종류의 기괴한 메모리 손상 오류가 발생합니다. 내가 대신 할 경우
std::allocator_interface<std::allocator<T> > alloc_;
그런 다음 정상적으로 작동합니다.
stl :: allocator를 사용하는 올바른 방법은 무엇입니까? STLPort/Solaris 버전은 g ++로 컴파일하지 못했지만 g ++은 맞습니까?
표준 라이브러리에는'allocator_interface'라는 것이 없습니다. – AraK