如何释放从vec中删除的对象的内存?

如果我有一个vec结构体,调用vec.remove(index)将删除存储在vecat index中的结构体index。但是,文档没有明确提及这些删除的对象会发生什么。我如何确保他们被释放?

如果 Rust 中的对象在超出范围时被释放,那么这些被移除的对象会发生什么,因为向量可能会超出范围,但被移除的对象可能会悬空在内存中?的代码Vec::remove(index)似乎只是抵消了向量中的元素以覆盖被删除的元素:

// Shift everything down to fill in that spot.
ptr::copy(ptr.offset(1), ptr, len - index - 1);

回答

Vec::remove(i)从向量中复制元素并将其他所有内容向下移动以填充该位置。然后它会将该元素返回给您。你可以用那个元素做任何你想做的事情。如果删除它,该对象将从内存中释放,就像任何其他对象一样:

vec.remove(i); // <- the element at index `i` is dropped and freed from memory


以上是如何释放从vec中删除的对象的内存?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>