如何检测malloc是否在swift中失败?
最终目标是简单地分配所需的空间量,如果ios无法分配,则优雅地向用户报告(而不是终止)。
当我尝试下面的代码时,指针永远不会为nil,而errno总是为0。
let pointer : UnsafeMutableRawPointer? = malloc(fileSize)
print("errno = \(errno)")
if (pointer == nil) {
print("Malloc failed")
}
答案 0 :(得分:1)
你为什么在Swift中使用malloc
呢?
let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: fileSize)
更重要的是,在什么情况下读取文件需要你手动分配这样的内存? Foundation提供了用于直接将文件读入Data
。
答案 1 :(得分:1)
LLVM具有优化功能,可以避免未使用的malloc
次呼叫。如果您的测试代码从未真正需要分配,则永远不会执行。