找到
iPhone 内存泄露:Leaks 工具指引
最近常使用 Instruments 这个工具,我发现它对追踪游戏中的内存泄露非常有帮助。自
从发现
Instruments 如此有用后,我就觉得写一篇文章介绍如何使用它来追踪内存泄露
对其他人也会有帮助。
什么是内存泄露?我为什么要关心内存泄露?
访问维基百科可以获得更多关于内存泄露的信息。
我如何知道内存泄露了?
一些内存泄露可以很容易地通过阅读代码来发现,另一些就要困难点了,这就是为
什么需要
Instruments 的原因。Instruments 有一个“Leaks”工具,它会准确地告诉你什么
地方发生了内存泄露,以便你能定位和修复泄露问题。
例子程序
我写了一个例子程序,它有两个地方会发生内存泄露,一个在 Objective-C 视图控制
器中,另一个在
C++ 类中。例程可以从这里获得。下边的代码是从例程里摘录的,包含
了我们需要追踪内存泄露的代码。
// Leaky excerpts – see GitHub for complete source
1
2
- (void)viewDidLoad {
3
[super viewDidLoad];
4
5
LeakyClass* myLeakyInstance = new LeakyClass();
6
delete myLeakyInstance;
7
8
mMyLeakyString = [[NSString alloc] initWithUTF8String:”I’m a leaky string.”];
9
10 [self doSomethingNow];
11 }
12
13 - (void) doSomethingNow
14 {
15 mMyLeakyString = [[NSString alloc] initWithUTF8String:
16 “Look, another alloc, but no release for first one!”];
17 }
18
19 // Leaky excerpts – see GitHub for complete source