佳为好友
原:内存泄露问题经验
创建:
10-9-28
内存泄露问题:
*所有成员变量需要在程序中,多次赋值的,
也就是说不仅仅是在初始化函数分配一次的,
则一定要使用访问变量,否则容易引起内存的释放等问题.
*数组释放时异常,发现前几个元素都是0x0.注意,
这个时候并不是因为数组因为有0x0的元素而导致的异常,
而是因为在释放到0x0之后的元素时,发生了异常,
很可能是外部将数组的元素释放了.至于有0x0的原因,
是因为数组在依次释放,每次释放了一个元素之后,
都会置为0x0.所以,显示0x0的元素,
其实是正确释放了的元素.
修改方法是:查找数组的对象,是否正确释放了,有些时候,
可能需要使用访问函数来进行成员变量的存储和释放,
而不是直接操作成员变量.
*[alert show]会提示内存泄露.因为,
alert不会在当前页面显示.它会被加入到系统的资源中,
等待下次event到达之后,才会显示出来,因此,
系统会在你show之后,自动retain它,
然后在它显示之后,在release它.总而言之,
你可以忽略它的泄露.
参见:
http://stackoverflow.com/
questions/2862335/uialertview-
show-causing-a-memory-leak
*访问函数的内存泄露.如果某个变量有访问函数,则 在程序中someVar = xxx会导致内存泄露,而[someVar release],则会导致异常退出.
方法是:
1,先使用@pro ,搜索所有的访问变量.然后全选,粘贴到某个文本文件中.
2,然后针对每个访问变量,搜索 [^.]sessionid[ ]*= 正则表达式来搜索所有someVar = xxx
3,然后针对每个访问变量,搜索 name[ ]*release 查看是否有除了在dealloc之外的删除,
需要修正为self.xxx = nil;
+++++
posted on 2012-12-25 09:55
佳为好友
阅读(272)
评论(0)
编辑
收藏
引用
所属分类:
Debug-GDB
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
转:Enabling Remote Debugging via Private APIs in Mobile Safari
原:gdb与时间戳
原:gdb与dateWithTimeIntervalSince1970的bug
转:Inspecting Obj-C parameters in gdb -好
原:gdb打印NSArray里面的每个元素的内容
原:汇编MOV和LEA
原:GDB的数据断点和ObjC的@property
原:利用Leaks和Zombies检查内存泄露
转:iPhone Crash Logs -3
转:How to debug those random crashes in your Cocoa app -非常强悍的调试技巧
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
导航
新随笔
管理
<
2012年12月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
Debug
(rss)
Debug-GDB(25)
(rss)
Tool(11)
(rss)
UI(46)
(rss)
非UI(41)
(rss)
删除(1)
(rss)
搜索
最新评论
评论排行榜
1. 原:关于MVC中C的讨论,以及MFC是否能够模仿Struct(0)
2. 转:C/C++格式化规定符(0)
3. 转:file is universal (3 slices) but does not contain a(n) armv7s slice error for static libraries on iOS, anyway to bypass?(0)
4. 转:[转] Gmail 的Host解决方案(0)
5. 转:在XCode中设定内存断点(数据断点,变量断点)(0)