提问者:小点点

Swift Struct Warning“初始化'UnsafeMutableRawPointer'导致指针悬空”


我搜索了许多类似问题的答案,但没有找到正确的答案来解决这个问题。 我有一个很简单结构

  struct MyParameters {
    var position: CGPoint
    var size: Float
  }

然后这个初始化

 var parameters = MyParameters(position: .zero, size: 0)
 let pointer = UnsafeMutableRawPointer(&parameters)

我在第二行收到警告

 Initialization of 'UnsafeMutableRawPointer' results in a dangling pointer

我理解编译器正在抱怨,因为它不确定指针指向的内存是否会继续存在。 但是在那种情况下传递指针的正确方式是什么呢?


共1个答案

匿名用户

使用withUnsafeMutableBytes

func foo() {
    var parameters = MyParameters(position: .zero, size: 0)
    
    withUnsafeMutableBytes(of: &parameters) { pointer in
         // here the lifetime is known
    }
}