std::allocator 的作用?如何自定义 allocator?