ABMultiValueCopyLabelAtIndex使用不当引起的内存泄漏
http://blog.sina.com.cn/s/blog_7309637a01016q6c.html
NSString *mm = (NSString*)ABMultiValueCopyValueAtIndex(phone, i);
CFStringRef mmcf = ABMultiValueCopyValueAtIndex(phone, i);
NSString *mm = (NSString*)mmcf;
mm = [mm substringToIndex:1];//mm由NSString的系统机制自行维护
CFRelease(mmcf);
最后,为什么会这样,Why?
首先,将ABMultiValueCopyValueAtIndex(phone, i)得到的结果记作变量CF,
其类型是CFString。
CFString必须使用CFRelease()来释放,否则会内存泄漏;
(NSString*)CF是类型强制转换;把CF的内容以NSString*的形式提供出来。所以(NSString*)后,本质还是CF.
于是下面这句代码
NSString *mm = (NSString*)ABMultiValueCopyValueAtIndex(phone, i);
的真正含义是:
NSString *mm = (NSString*)CF;
此时,mm和CF本质上是同一个东东;
继续看接下来的代码:
mm = [mm substringToIndex:1];
将[mm substringToIndex:1]的结果记作变量B,于是上面的的语句也可以写作:
mm=B
这时产生问题了,CF哪里去了?按照这样写代码的方式,没有办法释放CF,所以CF即将被内存泄漏了。
ABMultiValueCopyLabelAtIndex使用不当引起的内存泄漏相关推荐
- Java Review - 线程池中使用ThreadLocal不当导致的内存泄漏案例源码分析
文章目录 概述 Why 内存泄露 ? 在线程池中使用ThreadLocal导致的内存泄漏 概述 ThreadLocal的基本使用我们就不赘述了,可以参考 每日一博 - ThreadLocal VS I ...
- android释放acitity内存,Android 内存泄漏分析与解决方法
在分析Android内存泄漏之前,先了解一下JAVA的一些知识 1. JAVA中的对象的创建 使用new指令生成对象时,堆内存将会为此开辟一份空间存放该对象 垃圾回收器回收非存活的对象,并释放对应的内 ...
- ThreadLocal到底有没有内存泄漏?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 ThreadLocal 也是一个使用频率较高 ...
- Netty防止内存泄漏措施
谨以此文献给李林锋即将新生的爱女. 1. 背景 1.1 直播平台内存泄漏问题 某直播平台,一些网红的直播间在业务高峰期,会有 10W+ 的粉丝接入,如果瞬间发生大量客户端连接掉线.或者一些客户端网络 ...
- ThreadLocal到底有没有内存泄漏?从源码角度来剖析一波
1. 前言 ThreadLocal 也是一个使用频率较高的类,在框架中也经常见到,比如 Spring. 有关 ThreadLocal 源码分析的文章不少,其中有个问题常被提及:ThreadLocal ...
- golang 关闭gc 并手动gc_Golang 防内存泄漏编码原则
(给Go开发大全加星标) 来源:zmlgo https://www.cnblogs.com/share-ideas/p/11365511.html [导读]go 编程中,如果写法不当,可能引发内存泄漏 ...
- ThreadLocal 内存泄漏问题
本文说说ThreadLocal由于使用不当造成的内存泄漏问题 Thead和ThreadLocal的内存状况如下图,不了解的同学参考: 图解ThreadLocal核心原理 如果线程太多,每个线程的val ...
- web 开发之js---理解并解决IE的内存泄漏方式
程序当中任何编程内存操作不当都会导致内存泄漏 http://wenku.baidu.com/link?url=8ba4UIn1aaevxTagH-F4vID79-bAfxdcLdeujGFn7PBnv ...
- threadlocal使用场景_ThreadLocal有没有内存泄漏?源码给你安排得明明白白
1. 前言 ThreadLocal 也是一个使用频率较高的类,在框架中也经常见到,比如 Spring. 有关 ThreadLocal 源码分析的文章不少,其中有个问题常被提及:ThreadLocal ...
最新文章
- wcf 返回图片_WCF实现上传图片功能
- appium 搭建及实例
- iOS 将16进制颜色转换成UIColor
- java程序源代码如何保存到桌面_如何编写JAVA小白第一个程序
- Node.js listen EADDRINUSE 错误解决 How to solve nodejs Error: listen EADDRINUSE
- 2048小游戏设计思路
- 计算机网络实验(router_sim)工具
- The specified JRE installation does not exist异常的原因和解决办法
- svm支持向量机分类方法
- 拓端tecdat|R语言和Stan,JAGS:用rstan,rjags建立贝叶斯多元线性回归预测选举数据
- java long类型6_Java学习6——基本数据类型及其转换
- java mysql图书馆管理系统源码+论文
- hourstracker 考勤表软件下载
- 江西银行服务器怎么选择硬件配置
- x509证书验证示例
- 一文掌握智能抠图Deep Image Matting(pytorch实现)
- 【算法学习笔记07】贪心算法(Greedy Algorithm)
- iOS 手动实现KVO / iOS KVO底层原理
- IDEA全局搜索快捷键Ctrl+Shift+F无效,解决方法
- 在matlab中理解采样定理