나는 이상한 일에 대해 혼란 스럽다. ... 나는 서명되지 않은 char 배열을 가지고있다 ... 나는 그것을 calloc을 사용하여 할당하고 그것에 몇 바이트의 데이터를 기록한다. 이 서명되지 않은 char 및 다시 할당 할 이전 메모리 할당 된 동일한 주소를 참조하십시오. 나는 이유를 이해한다. 그러나 나는 내가 두 번째로 쓰려고하는 데이터가 쓰여지지 않은 이유를 이해할 수 없다. 처음 쓰여진 데이터가 쓰여졌다. 아무도 나에게 이것을 설명 할 수 있을까? ?????? unsigned char 할당 및 무료 문제
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