专栏名称: coding到灯火阑珊
专注于技术分享,包括Rust、Golang、分布式架构、云原生等。
今天看啥  ›  专栏  ›  coding到灯火阑珊

只用一行代码,就可以破坏Rust的内存安全

coding到灯火阑珊  · 公众号  ·  · 2025-01-22 06:00
    

文章预览

Rust应该是内存安全的,但是如果我告诉你,某个计算机奇才只是想出了下面一行代码,就破坏了rust编译器,破坏了安全承诺。 通过使用这一行代码,他就能在安全的Rust中导致未定义的行为。 现在你可能想知道这怎么可能,Rust编译器是不是出问题了,实际上是的,而且出问题很长一段时间了。在GitHub上有一个问题跟踪,显示这个问题已经有近10年没有解决了。 这个缺陷非常容易理解,我们将这段代码解构一下,先把向量提取到一个变量中,然后定义一个 make_static 函数。 现在,我们将简单地接受一个引用作为输入并返回相同的引用,在这种情况下,我们将引用传递给返回的向量,然后打印出来。 现在,如果我们在调用 println! 之前显式地删除vec,会发生什么呢?Rust编译器将正确抛出一个错误:一旦底层值被删除,我们就不能使用引用,因为引用 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览