Я пытаюсь написать код для создания NSMutableData из malloced buffer.I используется freewhendone = ДА
1) Это дает ошибку в доступе буфера после NSData создаются. (В MemSet ниже в коде)
2) Указатель буфера malloced и указатель [data bytes] отличаются.проблем с NSMutabledata byteswithnocopy
Есть ли какие-либо объяснения для этого?
UWORD8 *rgb_buffer = malloc(u4_stride * u4_height * 3);
NSMutableData *rgbData = [NSMutableData dataWithBytesNoCopy:rgb_buffer
length:(u4_stride * u4_height * 3)
freeWhenDone:YES];
memset(rgb_buffer, 0, (u4_stride * u4_height * 3));
Вероятно, вы работаете в ARC и не используете объект rgbData после memset; следовательно, он может рано высвобождать объект и, таким образом, освобождать rgb_buffer. См. Http://blog.bignerdranch.com/296-arc-gotcha-unexpectedly-short-lifetimes/ – iccir