gpt4 book ai didi

objective-c - C 和 Objective-C - 释放无符号字符指针的正确方法

转载 作者:太空狗 更新时间:2023-10-30 03:41:44 25 4
gpt4 key购买 nike

在我的应用程序中,我使用此函数创建了一个无符号字符指针:

- (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 概念。感谢所有帮助。

最佳答案

关于在 objective-c 中使用 malloc/free 的安全性有很好的讨论 here .

只要您正确地 free() 了 malloc() 的内存,应该就没有问题。

我个人认为使用 NSMutableData 或 NSMutableArray 更简单。如果你不需要极致的性能,我不会直接使用 C malloc/free 语句。

关于objective-c - C 和 Objective-C - 释放无符号字符指针的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6885086/

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