Я запутался в одной странной вещи .... У меня есть unsigned char array .... Я выделяю его с помощью calloc и записываю в него некоторые данные в байтах ... но когда я освобождаюсь этот unsigned char и выделите его еще раз, я вижу, что он сохраняет тот же адрес в памяти, который был назначен ранее. Я понимаю, почему ... Но я не могу понять, почему данные, которые я пытаюсь написать там второй раз, не написаны ... Там написаны данные, которые были написаны впервые ... Может ли кто-нибудь объяснить мне это? ??????unsigned char alloc и бесплатная проблема
unsigned char *rawData = (unsigned char*) calloc(height * width * 4, sizeof(unsigned char));
Это, как я передать его .... На самом деле моя проблема заключается в том, что из-за этого распределения, которое происходит один раз каждые 2 секунды у меня есть утечка памяти ... Но когда я пытаюсь освободить выделяется сектор памяти случается, что описано выше .... :(
Пожалуйста, если кто-нибудь может мне помочь .... я бы так рад ... Вот код ...
- (unsigned char*) createBitmapContext:(UIImage*)anImage{
CGImageRef imageRef = [anImage CGImage];
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = (unsigned char*) calloc(height * width * 4, sizeof(unsigned char));
bytesPerPixel = 4;
bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
CGContextRelease(context);
imageRef=nil;
return rawData; }
в этом коде нет части где я свободен (rawData), и потому, что я не могу освободить его внутри этого метода, я попытался определить rawData глобально и освободить его после вызова этого метода ... но ничего интересного ....
Пожалуйста, если кто-нибудь может мне помочь. ... Я был бы так рад ...
Вам нужно будет предоставить полный фрагмент кода, который отображает как распределения, так и записи буфера, и как вы проверяете содержимое. Вышеупомянутое недостаточно, чтобы ответить на ваш вопрос. – gavinb
@ gavinb done ... Любая интересная идея? – Garnik