Merge pull request #304 from XasaKura/main

Update smart-pointer/box.md
pull/306/head
Sunface 3 years ago committed by GitHub
commit d62fe4dc05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -249,7 +249,7 @@ fn gen_static_str() -> &'static str{
那么我说一个简单的场景,**你需要一个在运行期初始化的值,但是可以全局有效,也就是和整个程序活得一样久**, 那么久可以使用`Box::leak`,例如有一个存储配置的结构体实例,它是在运行期动态插入内容,那么就可以将其转为全局有效,虽然`Rc/Arc`也可以实现此功能,但是`Box::leak`是性能最高的。
## 总结
`Box`背后调用`jemalloc`来做内存管理所以堆上的空间无需我们的手动管理。与此类似带GC的语言中的对象也是借助于box概念来实现的一切皆对象 = 一切皆box 只不过我们无需自己去box罢了。
`Box`背后调用`jemalloc`来做内存管理所以堆上的空间无需我们的手动管理。与此类似带GC的语言中的对象也是借助于box概念来实现的一切皆对象 = 一切皆box 只不过我们无需自己去box罢了。
其实很多时候编译器的鞭笞可以助我们更快的成长例如所有权规则里的借用、move、生命周期就是编译器在教我们做人哦不是是教我们深刻理解堆栈、内存布局、作用域等你在其它GC语言无需去关注的东西。刚开始是很痛苦但是一旦熟悉了这套规则写代码的效率和代码本身的质量将飞速上升直到你用Java开发的效率写出Java代码不可企及的性能和安全性最终Rust语言所谓的开发效率低、心智负担高对你来说终究不是个事。

Loading…
Cancel
Save