1

我有一个带有接口的 C 方法

size_t foo(uint8_t ** output)

这被导入到 Swift 作为

func foo(_ output: UnsafeMutablePointer<UnsafeMutablePointer<UInt8>>) -> Int

如何从 Swift 调用此方法?

4

1 回答 1

1

假设foo()分配一个uint8_t数组,将地址放入 指向的内存位置output,并返回分配数组的大小,您可以像这样在 Swift 中使用它

var output : UnsafeMutablePointer<UInt8> = nil
let size = foo(&output)
for i in 0 ..< size {
    println(output[i])
}

您还必须决定谁负责释放分配的内存。如果foo()函数使用它分配它, malloc()那么你可以从 Swift 中释放它

free(output)
于 2015-05-15T08:20:41.030 回答