std::allocator是对底层内存模型的抽象,它包含了调用new和的功能delete. delete虽然不需要大小,但是deallocate() 需要它.
std::allocator
new
delete
void deallocate(T*p,std :: size_t n); "参数n必须等于最初生成p的allocate()调用的第一个参数;否则,行为是未定义的."
为什么?
现在我要么在解除分配之前进行额外的计算,要么开始存储我传递给分配的大小.如果我没有使用分配器,我就不必这样做了.
c++ memory-management stl allocator delete-operator
allocator ×1
c++ ×1
delete-operator ×1
memory-management ×1
stl ×1