最新更新:苹果已接受该问题的修复。最终解决方案在相关代码所有者 review 后进行了调整。 蛇年春节假期前,一位同事向我展示了一个由 use-after-free(释放后使用)错误导致的神秘崩溃。最近,我有时间深入研究这个问题,并发现崩溃是由 Swift 编译器的错误编译引起的。下面是最小复现代码,必须使用 -Osize 优化级别编译。我们可以通过在编译过程中启用地址检查器(address sanitizer)来检测 use-after-free 问题。 有趣的是,将 AutoreleasingUnsafeMutablePointer…