background image

找到

 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