在 Accelerated C++ 的第 11 章中,作者介绍了一个 Vector 类,它使用数组来模拟 std::vector 的行为。他们使用分配器类来处理内存管理。该函数的uncreate
作用是销毁数组的每个元素并释放为数组分配的空间:
template <class T> void Vec<T>::uncreate() {
if (data) {
// destroy (in reverse order) the elements that were constructed
iterator it = avail;
while (it != data)
alloc.destroy(--it);
// return all the space that was allocated
alloc.deallocate(data, limit - data);
}
// reset pointers to indicate that the Vec is empty again
data = limit = avail = 0;
}
显然我们需要释放分配的空间。但我不清楚为什么我们也需要销毁单个元素。如果我们只释放内存而不破坏单个元素会发生什么?