私は次のエラーでクラッシュに直面しています:クラッシュCGDataProviderCreateWithCopyOfData:vm_copyに失敗しました:ステータス1
"CGDataProviderCreateWithCopyOfData: vm_copy failed: status 1."
は私が複数の質問を持っている、あなたは助けることができます。
vm_copyのステータス1は何のために失敗しましたか?
このクラッシュは、データコピーの内部forループにブレークポイントを設定した場合にのみ発生します。その後、ブレークポイントを再開して削除します。ブレークポイントがない場合、関数は実行されますが、空のイメージが表示されます。ブレークポイントを設定しなくても、そのようなクラッシュが検出され、アプリケーションの実行が停止されるようにするにはどうすればよいですか?
このエラーは、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