Утечка памяти iPhone с помощью malloc - PullRequest
0 голосов
/ 14 апреля 2010

У меня утечка памяти, обнаруженная приборами, и она должна быть в этой строке кода:

indices = malloc( sizeof(indices[0]) * totalQuads * 6);

На самом деле это фрагмент кода из учебника, который, на мой взгляд, не содержит утечек. так сказать. Теперь я считаю, что ошибка где-то еще, но я не знаю, где.

Это последние трекбеки:

5 ColorRun -[EAGLView initWithCoder:] /Users/me/programming/colorrun_3.26/Classes/EAGLView.m:98
4 ColorRun -[EAGLView initGame] /Users/me/programming/colorrun_3.26/Classes/EAGLView.m:201
3 ColorRun -[SpriteSheet initWithImageNamed:spriteWidth:spriteHeight:spacing:imageScale:] /Users/me/programming/colorrun_3.26/SpriteSheet.m:68
2 ColorRun -[Image initWithImage:scale:] /Users/me/programming/colorrun_3.26/Image.m:122
1 ColorRun -[Image initImpl] /Users/me/programming/colorrun_3.26/Image.m:158
0 libSystem.B.dylib malloc

Кто-нибудь знает, как к этому подойти?

Ответы [ 2 ]

1 голос
/ 14 апреля 2010

Следуйте логике вашей программы, глядя на то, что происходит с переменной indices. Поскольку вы назначили ему malloc хранилище, должен быть соответствующий free.

Итак, разберись:

  • где эта переменная освобождается
  • когда это должно произойти
  • Есть ли условия, когда этого не происходит? (например, преждевременный выход из функции из-за ошибки)
0 голосов
/ 14 апреля 2010

Может также потребоваться дважды проверить sizeof (indexes [0]), чтобы убедиться, что он дает ожидаемое число ...

...