内存管理深入研究

每次做项目最后都被内存管理纠缠几天,而且我们做的又是最消耗内存的音视频项目,如果控制不好内存,小则内存暴增,大则程序崩溃,如果不除掉这块心头病,项目开发难以顺利的进行,时间也白白浪费了,在这里深入剖析一下。

a.NSObject

原则一:尽量不使用自动释放方法,能自己释放的就自己释放。
正确做法:
NSData *data = [[NSData alloc]initWithBytes:packet.data length:packet.size];
[videoArray addObject:data];
[data release];
错误做法:
[videoArray addObject:[NSData dataWithBytes:packet.data length:packet.size]];

b.c里面的内存释放
  由于要使用ffmpeg解码视频,经常要和c里面的东西打交道,自然就少不了许多内存的释放,不过ffmpeg已经提供了很多方法让我们释放内存,重点是掌握这些函数,什么时候该使用他们

if (pFormatCtx) av_close_input_file(pFormatCtx);

c.当发生内存泄露了,如何检测?
1.Analyze一下
2.instruments

3.还检测不出来,删代码,删到最简单,然后一步步退回去,这样肯定可以找到泄露的地方的。


“双语播放器”已在app store上架,欢迎大家前去下载(主要用于看电影,学英语,程序员一定要学好英语!)

这里是链接:

https://itunes.apple.com/cn/app/shuang-yu-bo-fang-qi-kan-dian/id950279764?mt=8


你可能感兴趣的:(c,File,input)