Tim*_*ann 6 unsafe undefined-behavior rust
我有一个[ManuallyDrop<Box<T>>]懒洋洋地填充的数组.为了实现这一点,我用"初始化"数组ManuallyDrop::new(mem::uninitialized()).
只要我只调用ManuallyDrop::drop()初始化元素,这是明确定义的行为吗?
如果您不从未初始化的内存中读取数据或创建指向它的指针,那么这不应该是 UB。
您需要进行一些仔细的记录,以禁止访问未初始化的项目,并且只删除已初始化的项目。在存在未初始化内存的情况下添加新项目需要使用 来完成ptr::write(),以避免底层内存的无效删除。但是,如果您覆盖现有的有效值,则不应使用,ptr::write因为您需要正确删除该值。
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |