утечка памяти из номера сInt? - PullRequest
1 голос
/ 15 июня 2011

Я думаю, что моя программа утечка памяти в последней строке этого цикла, но я не понимаю, почему это должно. Я не звоню на alloc. Кто-нибудь может объяснить это? Я знаю, что это может быть действительно очевидный ответ, но я только начинаю с цели C. Это просто, что вызов numberWithInt добавляет +1 сохранение или что-то? Спасибо

for (int k=0; k<=27; k++) {
    NSNumber *zero= [NSNumber numberWithInt:0];
    [randomUsed insertObject:zero atIndex:k];
    [alphaKeys insertObject:zero atIndex:k];
}

1 Ответ

1 голос
/ 15 июня 2011

Код, который у вас есть, не имеет утечки.

Вы должны думать о праве собственности.Вам не принадлежит zero здесь, поскольку он не был возвращен из alloc или new.Так как вы не владеете им, вам не нужно release это.

Что вы думаете о том, что insertObject: увеличивает retainCount, что верно.Когда вы вставляете zero в свои массивы, randomUsed и alphaKeys сохраняют ваш нулевой объект.В данном случае это массивы, а не вы. Они должны освободить его, а не вы.

Если есть утечка, то утечка происходит из-за самого массива, а не из вашего zero объекта.

Пожалуйста, просмотрите руководство по управлению памятью какао .

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