7、Rust 内存管理与应用实践

Rust内存管理与四大实践项目

Rust 内存管理与应用实践

1. Rust 内存所有权与指针

1.1 单一所有权机制

在 Rust 中,变量对堆上的对象具有单一所有权。例如, x 变量是堆上 my_rectangle 对象的唯一所有者。当 allocate_rect() 函数执行完毕,由于最后一个所有者消失,分配给 x 的堆内存会被释放。这种单一所有权由编译器强制执行,防止内存泄漏和悬空指针等问题。

以下代码展示了所有权的转移:

fn swap_around() {
    let my_rect: Box<MyRectangle> = Box::new(MyRectangle{x:5, y:5, length:25, breadth:15});
    let dup_rect = my_rect; // dup_rect 现在是所有者
    println!("{}", dup_rect.x);
    println!("{}", my_rect.x); // 报错 - 使用了已移动的值
}

在这个例子中, my_rect 的所有权转移给了 dup_rect ,之后再使用 my_rect 会导致编译错误。

1.2 与 C 语言内存管理的对比

1.2.1 C 语言内存管理示例

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值