任何人都可以使用泄漏吗? (来自乐器)

时间:2011-03-21 10:28:38

标签: xcode memory-leaks instruments

我在C和objC中编写了一个简单的程序,但是我无法理解Leaks。 这是:

int main(void) { int t = 78; t = malloc(50); t = 4; return 0; }

它能告诉我哪个变量是泄漏,或泄漏的位置?

互联网上的每个Leaks教程(所有这两个教程)都很糟糕。

请帮帮忙?

2 个答案:

答案 0 :(得分:3)

如果您使用您提供的代码测试泄漏仪器,难怪它无法发现任何问题。

  • 泄漏的默认快照间隔为10秒。但是你的程序甚至不会运行10秒。
  • 您正在应用程序的入口点范围内分配。 “t”在主要退出之前有效(未释放时)。所以OS无论如何都会收回内存。
  • 最重要的是:您的代码不包含泄漏。如果你对t“松散参考”,这将是一个泄漏。 (例如,通过做另一个t = malloc()或指定一些其他变量)

如果你想看到泄漏行动,创建一个默认的Cocoa应用程序,向你的AppDelegate添加一个实例变量“test”,并将以下代码放入实现中。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
   test = malloc(50);
   test = malloc(20);
}

答案 1 :(得分:0)

我没有使用Leaks,但网上有很多教程,从Apple的{ - {3}},Apple's developer documentation on the subjectMobile Orchard开始,这似乎是最好的。< / p>