C и Objective-C - Правильный способ освободить беззнаковый указатель char

в моем приложении я создаю беззнаковый указатель 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];

Где в этом процессе я могу освободить выделенную память? Когда я пытаюсь освободить свойство в dealloc, я получаю ошибку exc_bad_access. Я чувствую, что мне здесь не хватает фундаментальной концепции c или objective-c. Любая помощь приветствуется.

6
задан Daniel G. Wilson 30 July 2011 в 18:17
поделиться