मैं निम्न त्रुटि के साथ एक दुर्घटना का सामना करना पड़ रहा हूँ:क्रैश CGDataProviderCreateWithCopyOfData: vm_copy में विफल रहा है: स्थिति 1
"CGDataProviderCreateWithCopyOfData: vm_copy failed: status 1."
मैं कई प्रश्न हैं और आप कर सकते हैं।
vm_copy में स्थिति 1 के लिए क्या खड़ा है?
यह क्रैश तभी होता है जब मैं डेटा प्रतिलिपि के अंदरूनी भाग में ब्रेक पॉइंट सेट करता हूं। और फिर ब्रेकपॉइंट फिर से शुरू करें और हटा दें। यदि कोई ब्रेकपॉइंट नहीं है, तो फ़ंक्शन निष्पादित होता है लेकिन मुझे एक खाली छवि मिलती है। मैं कैसे सुनिश्चित करूं कि यदि मैं ब्रेक पॉइंट सेट नहीं करता हूं, तो ऐसे क्रैश पकड़े जाते हैं और एप्लिकेशन निष्पादन रोकता है?
यह त्रुटि तब होती है जब मैं CGBitmapContextCreateImage निष्पादित करता हूं। क्या कोई इसे हल करने के बारे में जानता है?
-(UIImage *) convertBitmapRGBA8ToUIImage:(UInt8**)img
:(int) width
:(int) height
{
CGImageRef inImage = m_inFace.img.CGImage;
UInt8*piData = calloc(width*height*4,sizeof(UInt8));
int iStep,jStep;
for (int i = 0; i < height; i++)
{
iStep = i*width*4;
for (int j = 0; j < width; j++)
{
jStep = j*4;
piData[iStep+jStep] =img[i][j];
piData[iStep+jStep+1] =img[i][j];
piData[iStep+jStep+2] = img[i][j];
}
}
CGContextRef ctx = CGBitmapContextCreate(piData,
CGImageGetWidth(inImage),
CGImageGetHeight(inImage),
CGImageGetBitsPerComponent(inImage),
CGImageGetBytesPerRow(inImage),
CGImageGetColorSpace(inImage),
CGImageGetBitmapInfo(inImage)
);
CGImageRef imageRef = CGBitmapContextCreateImage(ctx);
UIImage *finalImage = [UIImage imageWithCGImage:imageRef];
CGContextRelease(ctx);
CGImageRelease(imageRef);
free(piData);
return finalImage;
}
हां यह स्मृति संरेखण मुद्दा था। मैं छवि अभिविन्यास पर विचार नहीं कर रहा था। जिसने CGimage के लिए अलग चौड़ाई और ऊंचाई दी। इसने आपको बताया कि स्मृति गलत संरेखण का कारण बनता है। उत्तर के लिए धन्यवाद। – Jailbroken