NSBitmapImageRep中的内存泄漏很大

时间:2009-11-14 06:41:05

标签: objective-c cocoa memory-leaks appkit

我有一个方法来分析从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,我不知道如何正确释放它。有什么想法吗?

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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