我正在try 实现一个向量.我发现了这样一个代码,编写者在其中释放一个向量:
impl<T> Drop for MyVec<T> {
fn drop(&mut self) {
if self.cap != 0 {
while let Some(_) = self.pop() { }
let layout = Layout::array::<T>(self.cap).unwrap();
unsafe {
alloc::dealloc(self.ptr.as_ptr() as *mut u8, layout);
}
}
}
}
当我知道这些元素是连续存储的,并且dealloc
函数将清除内存中的整个序列时,为什么要在第四行一步一步地删除这些元素?
这个向量是否存储指针,并且这些元素被写入随机位置?单独删除元素的目的是什么?