0

CGImageRef から構築された NSBitmapImageRep 内のピクセル データを分析するメソッドがあります。関連するコードは次のとおりです。

CGImageRef ref;
// omitted code for initializing ref
NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:ref];
uint32* bitmapPixels = (uint32*) [bitmapRep bitmapData];
// do stuff with bitmapPixels
[bitmapRep release];
CGImageRelease(ref);

CGImageRef と NSBitmapImageRep を適切に解放していることはわかっていますが、-bitmapData の呼び出しは呼び出されるたびに約 2 MB リークし、適切に解放する方法がわかりません。何か案は?

更新:重要な点を 1 つ追加するのを忘れていました。メモリ リークは、フル スクリーン アプリケーションが実行されている場合にのみ発生します。通常の使用では、メモリは問題なく解放されます。

4

2 に答える 2

3

これをループで実行していますか?その場合、自動解放プールを作成して、メモリがタイムリーにクリーンアップされるようにする必要があるかもしれません。自動解放プールを参照してください。

于 2010-02-03T04:25:39.187 に答える
0

ビットマップ データは、CGImage または NSBitmapImageRep のいずれかによって所有されている必要があります (または、後者によって舞台裏で自動解放された NSData オブジェクトにコピーされます)。そのため、どちらのオブジェクトが所有 (またはコピー) しても、それを解放する必要があります。

heap/Instruments で反対の結果が表示されていますか?

于 2009-11-14T07:30:51.963 に答える