Skip to content

P.SAF.FFI.01 在 FFI 边界上传递数据应注意内存安全管理

【描述】 在 FFI 边界上传递数据要遵循 “内存由创建方来负责释放” 的基本原则来保证内存的安全管理。

否则可能会遇到以下问题:

  • 所有权问题: Rust 使用所有权系统管理内存,而 C 函数通常不了解 Rust 的所有权规则。如果将 Rust 字符串传递给 C 函数,需要确保内存管理的正确性,防止出现悬垂指针或者内存泄漏等问题。可以使用合适的 Rust-C 绑定库或者 FFI(Foreign Function Interface)来处理内存管理问题。

  • 生命周期问题: Rust 字符串的生命周期通常是由 Rust 的借用规则确定的。如果需要将字符串传递给 C 函数,并且 C 函数需要长时间持有字符串的引用,需要谨慎处理生命周期的问题,以避免引用无效或悬垂引用的情况。