C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C和Objective-C – 正确释放无符号字符指针的方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的应用程序中,我使用此函数创建一个unsigned char指针:
- (unsigned char*)getRawData
{
// First get the imagE into your data buffer
CGImageRef image = [self CGImage];
NSUInteger width = CGImageGetWidth(imagE);
NSUInteger height = CGImageGetHeight(imagE);

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

unsigned char *rawData = malloc(height * width * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData,width,height,bitsPerComponent,bytesPerRow,colorSpace,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpacE);

CGContextSetBlendMode(context,kCGBlendModeCopy);

CGContextDrawImage(context,CGRectMake(0.0f,0.0f,(CGFloat)width,(CGFloat)height),imagE);
CGContextRelease(context);

// Now your rawData contains the image data in the RGBA8888 pixel format.

return rawData;
}

在另一个类中,我将一个属性分配给该指针,如下所示:self.bitmaPDAta = [image getRawData];

在这个过程中我可以释放那个malloc内存吗?当我尝试在dealloc中释放属性时,它会给我一个exc_bad_access错误.我觉得我在这里缺少一个基本的c或objective-c概念.所有帮助表示赞赏.

解决方法@H_403_10@
关于在objective-c here中使用malloc / free的安全性有一个很好的讨论.

只要你正确地释放()你malloc()的内存,应该没有问题.

我个人认为使用NSMutableData或NSMutableArray更容易.如果您不需要最终性能,我不会直接使用C malloc / free语句.

大佬总结

以上是大佬教程为你收集整理的C和Objective-C – 正确释放无符号字符指针的方法全部内容,希望文章能够帮你解决C和Objective-C – 正确释放无符号字符指针的方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。