0

計測器によって検出されたメモリリークがあり、次のコード行にあるはずです:

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

これにアプローチする方法を知っている人はいますか?

4

2 に答える 2

1

indices変数に何が起こるかを見て、プログラムのロジックに従ってください。それにいくつかのストレージを割り当てmallocたので、対応する が必要freeです。

だから、理解してください:

  • その変数が解放される場所
  • それがいつ起こるべきか
  • 発生しない条件はありますか?(たとえば、エラーによる関数の早期終了)
于 2010-04-14T16:16:14.517 に答える
0

sizeof(indices[0]) を再確認して、期待する数値が得られていることを確認することもできます...

于 2010-04-14T16:21:47.470 に答える