Allocator
이 표준 라이브러리 할당 자 인터페이스를 준수하는 경우 null 포인터로 std::allocator_traits<Allocator>::deallocate
을 호출해도 안전합니까? Allocator
이 std::allocator
일 때 (결국 궁극적으로 delete
을 사용하기 때문에) 알고 있지만, Allocator
이 클라이언트 제공 클래스 인 경우 어떻게됩니까? 나는 명백한 수표를해야합니까? 의 기사에 Allocator concept에 대한 보증이 나와 있지 않으므로 "예"라고 대답하고 싶습니다.널 포인터에 대해 allocator_traits :: deallocate 호출
질문에 대한 의욕을 조금 갖기 위해 변수 p
이 버퍼 포인터를 보유하기로되어 있고 (처음에는 nullptr
) 버퍼가있는 유스 케이스를 상상할 수 있습니다. 처음에는 할당되지 않으므로 p
은 널 포인터로 남습니다.
저장 장치에 대한 포인터가 nullptr이고 개체 수가 0보다 많다는 뜻입니까? –
개체 수가 0인지 아닌지에 따라 대답이 달라 집니까? –
제 질문은 그 할당자가 nullptr을 할당 할 수 있다면 nullptr도 할당 해제에 유효한 인수라는 것입니다. 그러나 개체의 수가 0보다 큰 경우 nullptr을 반환하는 이유를 상상할 수 없습니다. –