简而言之,这是一个代码片段,它可以轻松地消耗尽可能多的内存,直到它停止为止。但为什么?当我将范围包装在while
中的autoreleasepool
内时,不会泄漏单个字节。但它仅影响当前范围;如果有漏功能调用,泄漏将继续。那么答案就是在autoreleasepool中包含易泄漏的操作?它看起来有点荒谬和不可靠。
import Foundation
while true {
let _ = "Foo Bar".data(using: .ascii)
usleep(100)
}
答案 0 :(得分:0)
这并不意外。在您的Sub IfThenElse()
With Sheet1
If .Range("A1").value > 500 Then
If MsgBox("A1 > 500, Is this correct", vbYesNo, "Amount of Lines") = vbYes Then
.Range("H11") = "My Formula"
Else
.Range("H11") = "I have Jumped"
End If
Else
.Range("H11") = "I have Jumped"
End If
End With
End Sub
将控制权返回到运行循环之前,顶级自动释放池不会被耗尽。放入其中的物体将继续积累。
我有点惊讶ARC并没有立即销毁while
实例,因为将它们分配给“cut”意味着它们实际上从不在范围内。你没有名字可以引用它们,也没有理由让它们活着。