gpt4 book ai didi

c - 静态链接到C程序的Rust代码是否会因此获得任何有益的安全特性?

转载 作者:行者123 更新时间:2023-12-03 11:34:06 25 4
gpt4 key购买 nike

受到Carol Goulding在“Rust Out Your C”上的talk的启发,以及我在将C逐个功能移植到Rust函数上的文章read的启发。
如果我有一个程序,该程序由3个函数组成,这些函数一个接一个地调用:
1(C)-> 2(C)-> 3(C)
并将第二个函数替​​换为静态链接的Rust函数,因此流程变为:
1(C)-> 2( R )-> 3(C)
函数2中的代码现在可以安全存储和/或键入吗?就安全性而言,它还会获得任何其他有益的特性吗?

最佳答案

是的。和不。这取决于。

  • 首先,函数1和3中的C代码不会受到任何影响,并且与任何C一样不安全(按照Rust的定义为不安全)。
  • 但是,函数2中的代码将受益于Rust的安全性。它的实现可以被认为是更安全的。
    但是,在C和Rust之间需要一些胶水。防 rust 安全性主要来自其类型系统,与之相比,C类型系统相当差。您需要从C函数和Rust函数的C函数中正确调用Rust函数。 C大多不了解Rust,因此需要在Rust方面进行。尽管有工具和工具箱可以帮助FFI,但您始终必须假设C是正确的,因为即使在(安全的)Rust中,C中的错误也可能会显现出来。此外,从Rust调用C函数总是需要unsafe,从C调用的Rust函数通常也会有一些unsafe。 FFI很容易出错:错误的参数大小,不正确的对齐方式,不正确的ABI,使用释放的内存都很可能会造成语言障碍,而且非常不安全。
  • 关于c - 静态链接到C程序的Rust代码是否会因此获得任何有益的安全特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63099850/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com