Core Foundation内存管理

本文介绍了CoreFoundation中的内存管理机制,包括引用计数概念及其管理规则。详细解释了如何通过Create和Get准则确定对象所有权,并提供了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Core Foundation内存管理


我的理解CoreFoundation是一堆C语言API的集合。内存管理和Objective C感觉挺像的。简单介绍如下:
CoreFoundation也有引用计数的概念,或者叫retain计数。这个计数代表有多少个拥有者持有一个对象。当一个对象的引用计数是0的话,这个对象就被释放了。CoreFoundation遵循下面的规律:
1,如果你创建了一个对象,那么你就持有它。
2,如果从某个地方得到一个对象,那么并没有持有它。为了防止它被释放,需要调用CFRetain方法。
3,如果你持有了一个对象,使用完后要CFRelease这个对象。

CoreFoundation有许多取得一个ref的方法。由于CoreFoundation使用的是持有的机制。所以我们必须要知道是否自己持有一个对象,这样才能管理内存。CoreFoundation制定了命名规则帮助我们判断是否持有一个对象。

1,Create准则:
如果函数名带有Create/Copy的话,说明你持有该对象。例如以下函数:

下面情况相对复杂一些

CFBagCreateMutableCopy函数既有Create又有Copy。实际上它是Create函数。后面Copy的意思是要Copy bag这个参数。

2,Get准则:
如果函数名带有Get的话,说明你并没有持有该对象。

Link:  http://www.wangdg.com/?p=447
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值