gpt4 book ai didi

c - 将预分配的 char* 缓冲区传递给 c 函数

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:01 25 4
gpt4 key购买 nike

我在 c 中有一个函数,它接收一个预分配的字符串并用数据填充它 - 我想从 swift 调用这个函数。我发现了很多关于如何将字符串从 swift 传递到 c 的示例,但我发现没有一个显示将数据写入预分配字符串的 c 函数。

c函数:

int GetData(char *dataJson, int maxSize);

在快速方面,这段代码可以编译,但我找不到如何预分配 dataBuffer

let dataBuffer = UnsafePointer<UInt8>
GetData(dataBuffer, 2048)

有没有办法在 Swift 中做到这一点?

最佳答案

一个简单的方法是用&传递一个数组作为inout表达式,这用指向连续元素的指针调用函数存储:

var dataBuffer = Array<Int8>(repeating: 0, count: 2048)
let result = GetData(&dataBuffer, numericCast(dataBuffer.count))

优点是不用手动管理内存,当 dataBuffer 超出范围时,它会自动释放。

关于c - 将预分配的 char* 缓冲区传递给 c 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46299227/

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