Avec ces variables:Pourquoi NSLog imprime-t-il un zéro supplémentaire lors de la consignation de ce tableau?
NSInteger dataStart;
uint64_t dataSize[1];
const unsigned char *beginning;
NSInteger bytesEnd;
... à ces valeurs:
dataStart = 499
dataSize[0] = 427
beginning = 9060864
bytesEnd = 9061793
... le code suivant:
NSLog(@"dataStart = %d, dataSize[0] = %d, beginning = %d, bytesEnd = %d",
dataStart, dataSize[0], (NSInteger)beginning, bytesEnd);
... envoie cela à la console:
dataStart = 499, dataSize[0] = 427, beginning = 0, bytesEnd = 9060864
En d'autres termes, un zéro supplémentaire a été inséré après le tableau, supplantant les autres variables. Cela fait toujours. J'utilise xcode 3.2.3. Que se passe-t-il ici? [Modifier pour souligner: Ce n'est pas seulement l'ancien favori d'imprimer un zéro où une valeur devrait être parce qu'un casting est faux. Il est l'insertion d'un zéro supplémentaire, puis d'imprimer la valeur correcte du début où il doit imprimer bytesEnd, et non l'impression bytesEnd.]
Merci,
Il ne s'agit pas simplement d'imprimer une valeur zéro, mais d'ajouter une valeur supplémentaire et de déplacer les autres variables le long d'une valeur. C'est la chose étrange. J'ai fait le mouseover dans le débogueur pour m'assurer que c'est ce que les valeurs étaient. Jeff LaMarche & David Mark :-) (J'essaie d'obtenir leur méthode splitTransferredPackets dans le chapitre 9 de More iPhone 3 Development pour des quantités décentes de données). – DenverCoder9
Bien sûr, cela déplace les autres variables: NSLog suppose que la valeur est de 32 bits, mais elle est de 64 bits, donc elle occupe également l'adresse de la valeur suivante. Si vous compilez en mode 64 bits, vous ne devriez quand même pas lancer de pointeur vers NSInteger. –
Je ne l'ai pas dit de compiler en mode 64 bits, et je suis en train de programmer pour iPhone, donc je ne pense pas que ce serait le cas. Aussi, il se connecte ailleurs bien. Mais cette explication a du sens pour dataSize [0] occupant 2 adresses car il s'agit en effet d'un entier de 64 bits, donc ayez un tick et un upvote :-) – DenverCoder9