IOBufferMemoryDe​​scriptor应该免费发布吗?

问题描述

我正在查看IOBufferMemoryDescriptor的文档。它说“...。除非另有说明,否则您还负责释放分配的缓冲区。”

IOBufferMemoryDescriptor::free也存在。我的问题是:我应该使用free还是release(或可能同时使用)进行清理?

解决方法

当使用free()删除最后一个句柄时,会自动调用

OSSafeReleaseNULL。 (这在内部调用release(),但通常最好使用宏。)

因此,永远不要直接调用free()方法,您只需要在自己的子类中重写它的上下文中关心它即可。始终对OSObject派生的类使用引用计数机制。