【发布时间】:2013-04-22 09:03:39
【问题描述】:
我有一个返回unsigned char *的方法:
- (unsigned char *)calledMethod {
...
unsigned char *result = (unsigned char*) calloc(size * 4, sizeof(unsigned char));
...
return result;
}
问题是,当我调用这个方法时:
unsigned char *myVariable = [myClass calledMethod];
我遇到了内存泄漏。
我应该如何释放内存?
我已经尝试过free(myVariable),但没有用。如果我在我的calledMethod 方法中调用free(result),就不会有泄漏,但是我不能返回它。提前致谢!
编辑:
问题是,我在 myVariable 中存储了 UIImage 的像素数据(每个 CGPoint:rgba 有 4 个组件)。我必须修改一些像素并重建图像。我正在访问这样一个点的数据:
int byteIndex = (bytesPerRow * point.y) + point.x * bytesPerPixel;
CGFloat red = (myVariable[byteIndex] * 1.0) / 255.0;
CGFloat green = (myVariable[byteIndex + 1] * 1.0) / 255.0;
CGFloat blue = (myVariable[byteIndex + 2] * 1.0) / 255.0;
CGFloat alpha = (myVariable[byteIndex + 3] * 1.0) / 255.0;
如果我使用NSMutableData,[NSMutableData dataWithBytes:(const void *) length:(NSUInteger)] 中的length 参数是什么,我将如何修改给定CGPoint 的数据?
【问题讨论】:
标签: ios objective-c