Rust:一个不再有 C/C+的,实现安全实时软件的未来( 五 )
任何借用的作用域都能不大于其所有者的。
不能在拥有可变引用的同时拥有不可变引用,但是多个可变引用是可以的。
第一个规则避免了释放重引用的发生,第二个规则排除了数据互斥的可能性。数据互斥会让内存处于未知状态,而它可由这三个行为造成:
两个或更多指针同时访问同一数据。
至少有一个指针被用来写入数据。
没有同步数据访问的机制。
当作者还是嵌入式工程师的时候,堆(heap)还没有出现,于是便在硬件上设置了一个空指针解引用的陷阱,这样一来,很多常见的内存问题就显得不是那么重要了。数据互斥是作者当时最怕的一种 bug;它难以追踪,当你修改了一部分看起来并不重要的代码,或是外部条件发生了微小的改变时,互斥的胜利者也就易位了。Therac-25 事件,就是因为数据互斥使得癌症病人在治疗过程中受到了过量的辐射,因此造成患者死亡或者重伤。
Rust 革新的关键也是它聪明的地方,它可以在编译时强制执行内存安全保障。这些规则对任何接触过数据互斥的人来说都应当不是什么新鲜事。
推荐阅读
- 雷神|原神:曾经有一个强力五星角色,却因各种“流言蜚语”,擦肩而过
- 次世代|韩国战队全军覆没,斗鱼选手实力强大,一人击溃一个队
- 手机游戏|LOL手游第一个世界赛,破晓杯火热开战,DKG能紧随EDG夺冠吗?
- xyg|月光败给XYG不敢去采访,怕主持人问他一个问题!根本没办法解释
- 卡牌|王者峡谷最难抓的五个英雄,暗信算一个,榜首玩起来非常快乐
- 传奇世界|传奇世界:盘点当年出现过哪些漏洞,有一个至今都存在?
- 扁鹊|裴擒虎虎年限定有变,嫦娥拒霜思配音引热议,扁鹊有一个好消息
- 绝地求生|不播绝地求生,跑去玩双马尾少女?PDD后又一个主播“沉迷”幻塔
- 光·遇|光遇:追光季复刻盘点,下一个返场先祖,可能是笛子或者灯泡斗篷
- 地下城与勇士|DNF:“全民云上”时代到来,一个过气小副本,究竟有何魅力?