У меня действительно утечка памяти? - PullRequest
3 голосов
/ 03 октября 2009

В Xcode я запускаю написанную мной программу с помощью инструмента утечки

В нем говорится, что утечки обнаружены, и общее количество пропущенных байтов продолжает расти.

Я смотрю на протекшие объекты, и ни один из них, похоже, не из моей программы.

Например, QuartzCore OpenGLES libLLVMContainer.dyl libCoreVMClient.dylib libGFXShared.dylib

Я виноват в том, что в программе происходит утечка памяти, или это просто плохой код, написанный Apple, и его следует ожидать?

Ответы [ 4 ]

10 голосов
/ 03 октября 2009

Всегда есть утечка или две в структурах Apple, если вы действительно ищете их (что является частью моей повседневной работы). Но, как правило, ничего серьезного и утечек, которые встречаются в относительно общем / стандартном коде.

Первый шаг - использовать Построить и проанализировать , чтобы выполнить базовую проверку работоспособности вашего кода. Это поймает много потенциальных утечек, но не все.

Тогда используйте инструменты. Когда вы обнаружите утечку в библиотеке Apple, посмотрите на трассировку стека выделения. В частности, ищите самый низкий кадр в вашем коде. Это обычно, где ваша утечка будет.

Думайте об этом так; Ваш код вызывает в среду Apple, которая может вызывать другие библиотеки и платформы Apple. Когда код Apple возвращается, он возвращает вам часть памяти. Если вы не управляете этой памятью должным образом, возможно, возникла утечка.

3 голосов
/ 03 октября 2009

Типичная программа выполняет вызовы в сторонние библиотеки, например, Рамки GUI. Если программа не освобождает ресурсы, которые она выделяет, они не будут уничтожены. Так что да, это, наверное, твоя вина!

1 голос
/ 03 октября 2009

Я предполагаю, что у яблока нет утечек памяти. У них также есть инструменты. Они определенно сделали тестирование. Единственный раз, когда я слышал об утечках, это веб-обзор UIKit. Я бы немного почитал на инструментах и ​​убедился, что ты правильно читаешь стек.

0 голосов
/ 03 октября 2009

используйте сборку и анализ, чтобы найти их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...