XCode内存泄漏检测如何工作?

时间:2010-02-23 16:37:43

标签: objective-c xcode memory-leaks

XCode Instrument Leak工具如何确定对象是否是泄漏或者尚未发布的内容? 我对Objective C很新,泄漏工具检测到我使用的代码中的泄漏。但代码对我来说听起来很合理。所以只是想知道我能相信这个工具多少?

1 个答案:

答案 0 :(得分:4)

“泄漏”作为仍然已分配的对象,但您的应用程序不再具有引用 指向那个对象。由于你不再有参考,你无法释放这个物体,因此它是一个泄漏。

正如leaks(1) man page所说:

  

泄漏识别泄漏的内存 - 应用程序已分配的内存,但已丢失且无法释放。具体而言,泄漏检查指定进程的内存,以查找可能指向malloc分配缓冲区的指针的值。从可写存储器中的指针,寄存器到达的任何缓冲区,        或者在堆栈上假定是正在使用的内存。从可达的指针到达的任何缓冲区        还假设malloc分配的缓冲区正在使用中。无法到达的缓冲区是泄漏;        缓冲区永远不会被释放,因为内存中没有指针存在于缓冲区中,因此free()        永远不会被称为这些缓冲区

您可能还想查看Instruments中的ObjectAlloc工具。