我想了解为什么某些指针API需要容量作为参数。与UnsafeMutablePtr.deallocate
或UnsafeMutableRawPointer.bindMemory()
相同。这与C内存管理形成鲜明对比,其中free()
和指针转换不需要大小。
我认为这些Swift API正在使用malloc()
和free()
。那么,为什么我需要这里的容量?有一些结构 - 比如MIDIPacketList - 它的大小是不明确的(因为它是“开放式的”,正如文档所说,大小可以通过检查内容来确定),我可以把容量= 1在这样的情况下,但在技术上是不正确的。这是一个错误,还是没关系?我不明白为什么在铸造(和解放)方面根本需要能力。
此外,这句话“在将uint8Pointer引用的内存重新绑定到UInt64之后,将该指针的引用内存作为UInt8实例访问是未定义的。” doc中的也难以理解,因为在C中你投射时,你的原始指针仍然有效。 C风格的演员和'重新绑定'之间是否存在一些本质区别?