Кто-нибудь может использовать Leaks? (из инструментов)

Я написал простую программу на C и objC с утечкой, и я не могу понять Leaks. вот:

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

Может ли он показать мне, какая переменная является утечкой или где она протекает?

Каждый Leaks туториал в интернете (все два) плох.

пожалуйста помоги?


person pvinis    schedule 21.03.2011    source источник
comment
Возможно, вы можете показать нам код, в котором есть утечка.   -  person Pete Wilson    schedule 21.03.2011


Ответы (2)


Если вы тестируете инструмент Leaks с предоставленным вами кодом, неудивительно, что он не может обнаружить никаких проблем.

  • Leaks имеет интервал создания снимков по умолчанию, равный 10 секундам. Но ваша программа не будет работать даже 10 секунд.
  • Вы выделяете в области точки входа приложения. "t" действителен (когда не освобожден) до выхода из main. Таким образом, ОС все равно освободит память.
  • И самое главное: ваш код не содержит утечки. Это будет утечка, если вы «упустите ссылку» на т. (например, выполнив другую t = malloc() или назначив t какую-либо другую переменную)

Если вы хотите увидеть утечки в действии, создайте приложение Cocoa по умолчанию, добавьте переменную экземпляра «test» в свой AppDelegate и поместите следующий код в реализацию.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
   test = malloc(50);
   test = malloc(20);
}
person Thomas Zoechling    schedule 21.03.2011
comment
Вы объявили тест в заголовочном файле? Какую версию Xcode/Instruments вы используете? Я только что дважды проверил код, который я разместил выше, и он ясно показывает 1 утечку, происходящую на линии со 2-м malloc. - person Thomas Zoechling; 21.03.2011
comment
правда у тебя работает. а как посмотреть где в коде утечка? - person pvinis; 21.03.2011
comment
Вид → Расширенная детализация. Это показывает вам стек вызовов, который приводит к утечке. - person Thomas Zoechling; 21.03.2011

Я не использовал Leaks, но в сети есть множество руководств, начиная с Apple — документация Apple для разработчиков по этому вопросу, Mobile Orchard и Какао — моя девушка, которая кажется лучшей.

person GoatInTheMachine    schedule 21.03.2011
comment
Я попробую еще раз. Я видел все это, но я все еще не могу его использовать. Это только я? - person pvinis; 21.03.2011
comment
Может быть! Если вы используете XCode 4, то статический анализ может быть достаточно хорош для выявления потенциальных утечек, вы можете попробовать это. - person GoatInTheMachine; 21.03.2011
comment
Я использую статический анализ, но это далеко не так. если я добавлю printf с t внутри него, то анализ ничего не покажет. - person pvinis; 21.03.2011