我正在将一些代码移植到Swift,但我对如何处理指针感到困惑。
在Swift中,如何创建一个空内存块,使C函数可以访问它
C资料来源:
UInt8* bytes = malloc( qty_bytes_in_file );..and,这样做之后,如何创建指向该内存的任意偏移量的指针?我需要重复地将指针移动到这个内存块中的各个地址,然后C函数会将数据写入其中。
C资料来源:
void* mData = &bytes[i];下面是我开始使用的C代码的缩写版本,因此您可以在上下文中看到这两行代码:
C资料来源:
UInt8* bytes = malloc( qty_bytes_in_file ); // Swift equivalent?
while ( !err ) {
AudioBufferList buffer_list = new_buffer_list();
buffer_list.mBuffers[0].mData = &bytes[i]; // Swift equivalent?
// each iteration, ExtAudioFileRead fills
// in a portion of buffer_list's '.mData':
err = ExtAudioFileRead(
audio_file,
&qty_frames_requested,
&buffer_list
);
i += foo;
}发布于 2014-06-09 19:58:41
对于第一个问题,我只需要做一个字节值数组:
var bytes = Array<UInt8>(count: qty_bytes_in_file, repeatedValue: 0)我认为你可以提供一个对数组的引用作为一个输入输出参数。例如:
let stream = NSInputStream(data: someNSDataObject)
let numberOfBytesRead = stream.read(&bytes, maxLength:buffer.count)在Swift中也有一个可用的包装器…
struct UnsafePointer<T>…使用" memory“属性访问原始底层内存。
https://stackoverflow.com/questions/24122031
复制相似问题