我正在追查一個奇怪的錯誤。在控制檯日誌中顯示此消息時會出現該錯誤:奇怪的malloc錯誤與指定大小的自動發佈的UIImages
BlurApp(5018,0xa00d6500) malloc: *** error for object 0x103b000: pointer being freed was not allocated
此消息在執行離開我的事件循環後彈出。它似乎在autorelease池被耗盡時發生。下面是這似乎觸發了錯誤代碼:
- (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
我打電話imageWithImage這樣:
UIImage* theImage = [self imageWithImage:origImage scaledToSize:rect.size];
theImage在調用程序使用,那麼我想自動釋放會照顧它。
如果我將return newImage;
更改爲[newImage retain];
,則看不到錯誤消息。
現在,這裏是很奇怪的。這個錯誤僅在特定大小的newSize時纔會發生。具體而言,當newSize的高度和寬度等於55到176範圍內的任何數字時,總是會發生這種情況,不包括56,110,112,114,而不是其他高度和寬度在5和300之間的值。(高度和寬度均爲總是等於所有測試)
我可以使用一些新鮮的眼睛在這...謝謝!
這似乎是在模擬器3.0 SDK中的錯誤。我沒有看到這些模擬器的SDK 3.1的錯誤消息,我沒有看到iPhone上的錯誤。 – mahboudz 2009-09-30 03:22:57