如何判断malloc是否在iOS上迅速失败?

时间:2017-09-16 18:48:25

标签: ios swift malloc

如何检测malloc是否在swift中失败?

最终目标是简单地分配所需的空间量,如果ios无法分配,则优雅地向用户报告(而不是终止)。

当我尝试下面的代码时,指针永远不会为nil,而errno总是为0。

let pointer : UnsafeMutableRawPointer? = malloc(fileSize)
print("errno = \(errno)")
if (pointer == nil) {
    print("Malloc failed")
}

2 个答案:

答案 0 :(得分:1)

你为什么在Swift中使用malloc呢?

let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: fileSize)

更重要的是,在什么情况下读取文件需要你手动分配这样的内存? Foundation提供了用于直接将文件读入Data

的API

答案 1 :(得分:1)

LLVM具有优化功能,可以避免未使用的malloc次呼叫。如果您的测试代码从未真正需要分配,则永远不会执行。