problemas con NSMutabledata bytes con una copy

Estoy intentando escribir un código para crear NSMutableData desde el buffer malloced. Utilicé freewhendone = YES
1) Da un error al acceder al búfer después de crear NSData. (En el memset en el código siguiente)
2) El puntero de búfer malloced y el puntero [bytes de datos] son ​​diferentes.

¿Hay alguna explicación para esto?

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)); 

De la guía de progtwigción de datos binarys

NSMutableData responde a dataWithBytesNoCopy: length :, pero los bytes se copyn de todos modos y el búfer se libera inmediatamente.

Da un error al acceder al búfer después de crear NSData. (En el memset en el código siguiente)

El búfer se libera inmediatamente.

El puntero de almacenamiento intermedio malloced y el puntero [bytes de datos] son ​​diferentes.

NSMutableData crea una copy de bytes.