gpt4 book ai didi

ios - 调用 initWithBitmapData 时未分配正在释放的 Malloc 指针错误

转载 作者:行者123 更新时间:2023-11-29 11:59:47 25 4
gpt4 key购买 nike

当我通过调用此例程创建 CIImage 时,我在标题中收到 malloc 错误。当我直接调用 initWithBitmapData(不在 createCIUimageFromData 例程中)时,它工作正常。

我看到了 iOS 中可能相关的错误的引用资料,但我不能确定,而且我肯定比 Apple 的代码更怀疑我的代码!

我的猜测是我的附加重定向以某种方式搞砸了事情,但是拥有单独的例程比在我需要的任何地方嵌入代码更干净。

谢谢。

失败:

- (CIImage *) createCIimageFromData : (unsigned char *)pData   width : (int32_t)width height : (int32_t)height
{

/*
Once we have the raw data, we convert it into a CIImage.
The following code does the required work.
*/
NSLog(@"entering createciimage\n");
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceGray();

NSData *_pixelsData = [NSData dataWithBytesNoCopy:pData length:(sizeof(unsigned char)*width*height) freeWhenDone:YES ];
CIImage *_dataCIImage = [[CIImage alloc] initWithBitmapData:_pixelsData bytesPerRow:(width*sizeof(unsigned char)) size:CGSizeMake(width,height) format:kCIFormatR8 colorSpace:colorSpaceRef];

CGColorSpaceRelease(colorSpaceRef);

/*
newImage is the final image
Do remember to release the allocated parts.
*/
NSLog(@"done ciimage\n");
return _dataCIImage;
}

作品:

void prepData(unsigned char *pData,  // source-destination
int strideSrc, // stride
int width,
int height,
double amount,
int deltaLimit,
id owner)
{

//[owner createCIimageFromData:pData width:width height:height]; // <-- commented out
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceGray();

NSData *_pixelsData = [NSData dataWithBytesNoCopy:pData length:(sizeof(unsigned char)*width*height) freeWhenDone:YES ];
CIImage *_dataCIImage = [[CIImage alloc] initWithBitmapData:_pixelsData bytesPerRow:(width*sizeof(unsigned char)) size:CGSizeMake(width,height) format:kCIFormatR8 colorSpace:colorSpaceRef];

CGColorSpaceRelease(colorSpaceRef);

// . . .
}

最佳答案

显然,问题是 NSData 对象试图释放数据时引起的。为避免此问题,请使用 freeWhenDone:NO,然后在完成 CIImage 后释放数据。

关于ios - 调用 initWithBitmapData 时未分配正在释放的 Malloc 指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com