sto creando un NSImage da un unsigned char * di dati 24bit RGB in questo modo:cacao gestione della memoria quando si utilizza initWithBitmapDataPlanes per creare NSImage
NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc]
initWithBitmapDataPlanes:(unsigned char **)&data
pixelsWide:gWidth
pixelsHigh:gHeight
bitsPerSample:8
samplesPerPixel:3
hasAlpha:NO
isPlanar:NO
colorSpaceName:NSCalibratedRGBColorSpace
bytesPerRow:gWidth*3
bitsPerPixel:24];
NSImage *img = [[NSImage alloc] initWithSize:NSMakeSize(gWidth, gHeight)];
[img addRepresentation:bitmap];
Il problema che sto avendo è che sto scrivendo in seguito più roba a 'dati' e so che NSImage non ne sta facendo una copia. Lo dico perché se in seguito scrivo tutti gli 0 sul mio buffer di dati, l'immagine diventa completamente nera.
Sto lottando con l'obiettivo C, quindi portami dietro se questo è banale.
Se faccio una copia locale dei 'dati' e mai libera poi le cose funzionano bene, ma perde ovviamente:
unsigned char *copy_of_data = new unsigned char[len];
memcpy(copy_of_data, data, len);
Come posso neanche:
(1) rendere i initWithBitmapDataPlanes creano la propria copia e gestire la deallocazione?
oppure (2) liberare i dati autonomamente, se necessario, dopo che l'immagine non ne ha più bisogno?
Ooh! Ho perso questo. Farò un giro e vedrò se funziona. – spartygw
Che funziona perfettamente! Grazie mille. – spartygw