【发布时间】:2022-07-14 03:28:53
【问题描述】:
我在 Mac 上的 Swift 中遇到了内存泄漏。我正在使用 Metal 为 GPU 上的计算创建一个缓冲区。当它们超出范围时,为它们创建的存储会自动删除,除非我将内容绑定到内存。
在这种情况下,即使缓冲区和绑定指针都超出范围,也不会删除内存。
我尝试手动释放缓冲区,但由于内存不是使用 malloc 分配的,所以失败了。
有没有办法管理这个内存以避免泄漏,或者这是 Mac 上的 Swift 中的一个错误?
还有其他想法吗?
非常感谢,
科林
let intensityBuff = myGPUData.device?.makeBuffer(length: MemoryLayout<Float>.stride * Int(myStars.nstars * myStars.npatch * myStars.npatch, options: .storageModeShared)
let intensityPointer = intensityBuff?.contents().bindMemory(to: Float.self, capacity: MemoryLayout<Float>.stride * Int(myStars.nstars * myStars.npatch * myStars.npatch))
【问题讨论】:
标签: swift memory-leaks metal