【发布时间】:2017-09-28 19:15:47
【问题描述】:
我在 Swift 3 中使用以下调用分配字节:
let wordSize = 2
let numbytes = 1024*wordsize
var ptr = UnsafeMutableRawPointer.allocate(bytes: numbytes, alignedTo: wordSize)
问题是释放内存是否正确,这两个调用是否相同,或者我应该使用一个而不是另一个?
free(ptr) // opt 1
ptr.deallocate(bytes: numbytes, alignedTo: wordSize) //opt 2
【问题讨论】:
-
比较How to handle UnsafeMutablePointer correctly。您应该使用
deallocate-free可能有效,但这取决于 Swift 运行时的实现细节。 -
我已经删除了 [swift3] 标签(再次)——因为它只针对与该版本的语言更改直接相关的问题,而你的不是。上面链接的问答(针对 Swift 2)(或多或少)回答了这一点,这一点很明显。
-
@Hamish 这个问题使用 Swift 3 语法。正如我在回答中指出的那样,Swift 4 中有一个适当的答案,语法不同。这会影响您从标签中删除语言版本的决定吗?我只是好奇;我真的不在乎这个问题被标记了什么
-
@BenLeggiero 特定于版本的标签仅用于针对特定版本的语言更改的问题(如其标签维基中所述),而不仅仅是有关使用该版本的代码的问题。我曾经编辑过很多问题以删除错误使用的版本标签,但最终因为它们被滥用太频繁而放弃了。
标签: swift unsafemutablepointer