我有一个方法可以分析从CGImageRef构建的NSBitmapImageRep中的像素数据。下面是相关代码:巨大的内存泄漏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每个这就是所谓的时间,我不知道如何正确地释放它。有任何想法吗?
更新:我忘了补充一点:内存只有在全屏应用程序运行时才会泄漏。对于经常使用,内存释放就好了。
快速查看引用表明-bitMapData只是返回一个指向bitmapRep对象内的数据的指针,因此应该不需要释放它。 你可以打开垃圾收集,看看会发生什么吗?它可能会给你一些线索。 – 2009-12-14 09:12:59
@托尼·肯的解决方案似乎在你完成数据后发布数据。没有游泳池,看起来Mac只是在任何时候发布数据。 – pop850 2011-05-07 21:41:09