virtual void
- do_deallocate(void* __p, size_t __bytes, size_t __alignment)
+ do_deallocate(void* __p, size_t __bytes, size_t __alignment) noexcept
+ override
{
- using _Aligned_alloc = std::__alloc_rebind<_Alloc, char>;
- size_t __new_size = _S_aligned_size(__bytes,
- _S_supported(__alignment) ?
- __alignment : _S_max_align);
- using _Ptr = typename allocator_traits<_Aligned_alloc>::pointer;
- _Aligned_alloc(_M_alloc).deallocate(static_cast<_Ptr>(__p),
- __new_size);
+ auto __ptr = static_cast<char*>(__p);
+ if (__alignment == 1)
+ _M_alloc.deallocate(__ptr, __bytes);