如何检测 malloc 在 swift 中是否失败?
最终目标是简单地分配所需的空间量,如果ios无法分配它,请优雅地向用户报告(而不是终止)。
当我尝试下面的代码时,指针永远不会为零,errno 始终为 0。
let pointer : UnsafeMutableRawPointer? = malloc(fileSize)
print("errno = (errno)")
if (pointer == nil) {
print("Malloc failed")
}
为什么要在 Swift 中使用malloc
?
let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: fileSize)
更重要的是,在什么情况下读取文件需要您像这样手动分配内存? 基金会提供了用于将文件直接读取到Data
中的 API。
LLVM有一个优化,可以省略未使用的malloc
调用。 如果您的测试代码实际上不需要分配,则永远不会执行它。