Rust:一个不再有 C/C+的,实现安全实时软件的未来( 二 )
在无法保证内存安全的情况下,未定义行为极有可能发生。漏洞 HeartBleed,一个著名的 SSL 安全漏洞,就是因为缺少内存安全防护;Stagefright,同样出名的安卓漏洞,是因为 C++ 里整数溢出造成的未定义行为。
内存安全不止用来提防漏洞,它对应用程序的正确运行和可靠性同样至关重要。可靠性的重要性在于它可以保证程序不会突然崩溃。至于准确性,作者有一个曾经在火箭飞行模拟软件公司工作的朋友,他们发现传递相同的初始化数据,但是使用不同的文件名会导致不同的结果,这是因为有些未初始化的内存被读取,因此模拟器就不同文件名的原因而使用了垃圾数值做基础,可以说他们的这个项目毫无用处。
为什么不用 Python 或 Java 这些可以保障内存安全的语言呢?
Python 和 Java 使用自动垃圾回收来避免内存错误,例如:
释放重引用(Use-After-Free):申请已经被释放的内存。
多次释放(double free):对同一片内存区域释放两次,导致未定义行为。
内存泄漏:内存没有被回收,导致系统可用的内存减少。
推荐阅读
- 雷神|原神:曾经有一个强力五星角色,却因各种“流言蜚语”,擦肩而过
- 次世代|韩国战队全军覆没,斗鱼选手实力强大,一人击溃一个队
- 手机游戏|LOL手游第一个世界赛,破晓杯火热开战,DKG能紧随EDG夺冠吗?
- xyg|月光败给XYG不敢去采访,怕主持人问他一个问题!根本没办法解释
- 卡牌|王者峡谷最难抓的五个英雄,暗信算一个,榜首玩起来非常快乐
- 传奇世界|传奇世界:盘点当年出现过哪些漏洞,有一个至今都存在?
- 扁鹊|裴擒虎虎年限定有变,嫦娥拒霜思配音引热议,扁鹊有一个好消息
- 绝地求生|不播绝地求生,跑去玩双马尾少女?PDD后又一个主播“沉迷”幻塔
- 光·遇|光遇:追光季复刻盘点,下一个返场先祖,可能是笛子或者灯泡斗篷
- 地下城与勇士|DNF:“全民云上”时代到来,一个过气小副本,究竟有何魅力?