J’ai ce tableau:
unsigned char* data = CGBitmapContextGetData(cgctx);
puis j’ai essayé d’obtenir la taille avec sizeof (data), mais cela me retournera une valeur absurde de 4. data contient une grande quantité d’informations. Cela ne peut pas être juste 4;)
Je reçois même des informations sur les données [8293] … donc … pas 4 éléments du tout.
sizeof
renvoie 4 car votre variable est déclarée comme un pointeur, par opposition à un tableau C ( char data[1024]
).
Pour obtenir la taille CGBitmapContextGetHeight
vous devez utiliser CGBitmapContextGetHeight
et CGBitmapContextGetWidth
.
Essayez d’utiliser
CGBitmapContextGetBitsPerPixel CGBitmapContextGetHeight CGBitmapContextGetWidth
ou
CGBitmapContextGetBytesPerRow CGBitmapContextGetHeight
La valeur de 4 n’est pas un non-sens, c’est la taille du pointeur que vous avez demandé. En C, il n’ya aucun moyen de déterminer la taille du tableau pointé par un pointeur.
Vous prenez la taille du pointeur, pas du tableau. Utiliser sizeof () pour les tableaux ne fonctionne que si vous avez réellement un tableau à mesurer;)
Vous confondez un pointeur et l’object sur lequel il pointe.