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,我不知道如何正确释放它。有任何想法吗?

更新:我忘了补充一点:只有在全屏应用程序运行时才会泄漏内存。对于常规使用,内存释放得很好。

4

2 回答 2

3

你是在循环做这个吗?如果是这样,您可能需要创建一个自动释放池以确保及时清理内存。请参阅自动释放池

于 2010-02-03T04:25:39.187 回答
0

位图数据应由 CGImage 或 NSBitmapImageRep 拥有(或由后者复制到自动释放的幕后 NSData 对象)。因此,无论哪个对象拥有(或复制)它都应该释放它。

您是否在堆/仪器中看到相反的结果?

于 2009-11-14T07:30:51.963 回答