Вызывает ли утечка памяти глобальные переменные? - PullRequest
0 голосов
/ 25 марта 2010

Когда я проверял свое приложение на утечки памяти, оно показывает 12 утечек.Каков будет эффект этого?

Я использовал глобальные переменные, как показано ниже

#import "file1.m"

int num;

#import "file2.m"

extern int num;
num = 10;

Может ли это вызвать утечку памяти?

Кто-нибудь, пожалуйста, помогите.Я новичок в программировании.

Ответы [ 4 ]

3 голосов
/ 25 марта 2010

Нет, вы не выделяете здесь динамическую память, и поэтому она (определенно) не может просочиться.

Если вы запустили свое приложение с помощью инструмента «Утечки», вы можете увидеть строку, где происходит утечка - в нижней части окна есть кнопка «Расширенные сведения», которая показывает стек вызовов, в котором происходит утечка памяти (или возможная утечка)).

3 голосов
/ 25 марта 2010

Глобальное значение int не должно учитываться или вызывать утечку памяти. Более типичная утечка в глобальном подсчете как памяти - это если у вас есть глобальный указатель на одноэлементный объект, который инициализируется один раз, а затем зависает в течение всего времени жизни процесса. Они проявляются как утечки памяти, хотя технически это не так.

Единственные утечки, о которых я бы беспокоился, связаны с неглобальными, нестатическими переменными, поскольку они, как правило, являются "настоящими" утечками.

2 голосов
/ 25 марта 2010

Я очень сильно сомневаюсь в этом. Утечки памяти - это динамическое распределение (другими словами, распределение во время выполнения, а не во время компиляции), когда вы забудете их освободить. Предполагается, что глобальные переменные, такие как num, существуют на протяжении всего исполняемого файла, поэтому их не следует считать утечкой.

Я подозреваю, что вам придется искать в другом месте.

Возможно, если вы опубликуете результаты проверки утечки, мы могли бы помочь еще.

0 голосов
/ 26 марта 2010

У вас есть XCode 3.2? Может быть, вы посмотрите на статический анализатор (Build and Analyze). Это часто помогает вам найти утечки памяти.

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