对Swift

时间:2017-03-09 20:46:40

标签: swift pointers

我想了解为什么某些指针API需要容量作为参数。与UnsafeMutablePtr.deallocateUnsafeMutableRawPointer.bindMemory()相同。这与C内存管理形成鲜明对比,其中free()和指针转换不需要大小。

我认为这些Swift API正在使用malloc()free()。那么,为什么我需要这里的容量?有一些结构 - 比如MIDIPacketList - 它的大小是不明确的(因为它是“开放式的”,正如文档所说,大小可以通过检查内容来确定),我可以把容量= 1在这样的情况下,但在技术上是不正确的。这是一个错误,还是没关系?我不明白为什么在铸造(和解放)方面根本需要能力。

此外,这句话“在将uint8Pointer引用的内存重新绑定到UInt64之后,将该指针的引用内存作为UInt8实例访问是未定义的。” doc中的enter image description here也难以理解,因为在C中你投射时,你的原始指针仍然有效。 C风格的演员和'重新绑定'之间是否存在一些本质区别?

0 个答案:

没有答案