Ich bin einen Absturz mit folgendem Fehler auftritt:Absturz CGDataProviderCreateWithCopyOfData: vm_copy fehlgeschlagen: Status 1
"CGDataProviderCreateWithCopyOfData: vm_copy failed: status 1."
Ich habe mehrere Fragen, und Sie können sie dabei helfen.
Wofür steht der Status 1 in vm_copy?
Dieser Absturz passiert nur, wenn ich einen Unterbrechungspunkt in der inneren for-Schleife der Datenkopie setze. Und dann wieder aufnehmen und entfernen Sie den Haltepunkt. Wenn es keinen Haltepunkt gibt, wird die Funktion ausgeführt, aber ich erhalte ein leeres Bild. Wie stelle ich sicher, dass solche Abstürze auch dann aufgefangen werden, wenn ich keinen Unterbrechungspunkt festlege, und die Anwendung die Ausführung stoppt?
Dieser Fehler tritt auf, wenn ich CGBitmapContextCreateImage ausführe. Weiß jemand, wie man das löst?
-(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;
}
Ja, es war Speicherausrichtungsproblem. Ich habe keine Bildorientierung in Betracht gezogen. Das gab unterschiedliche Breite und Höhe für CGimage. Das hat zu einer Speicherfehlersynchronisierung geführt, wie Sie darauf hingewiesen haben. Danke für die Antwort. – Jailbroken