问题描述
我正在查看IOBufferMemoryDescriptor
的文档。它说“...。除非另有说明,否则您还负责释放分配的缓冲区。” 。
IOBufferMemoryDescriptor::free
也存在。我的问题是:我应该使用free
还是release
(或可能同时使用)进行清理?
解决方法
当使用
free()
删除最后一个句柄时,会自动调用 OSSafeReleaseNULL
。 (这在内部调用release()
,但通常最好使用宏。)
因此,永远不要直接调用free()
方法,您只需要在自己的子类中重写它的上下文中关心它即可。始终对OSObject
派生的类使用引用计数机制。