我有一个方法来分析从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,我不知道如何正确释放它。有什么想法吗?
更新:我忘了添加一个要点:只有在运行全屏应用程序时才会泄露内存。对于常规使用,内存释放得很好。
答案 0 :(得分:3)
你是在循环中这样做的吗?如果是这样,您可能需要创建一个自动释放池,以确保及时清理内存。请参阅autorelease pools。
答案 1 :(得分:0)
位图数据应由CGImage或NSBitmapImageRep拥有(或由后者复制到自动释放的幕后NSData对象)。因此,无论哪个对象拥有(或复制)它都应该释放它。
您是否在堆/乐器中看到了相反的结果?