Pourrait être que je suis sur quelque chose d'évident, mais où les métadonnées du pointeur sont-elles stockées? Par exemple, si j'ai un pointeur IT 32 bits pTR code> et j'exécute ptr ++ code> il sait faire progresser 4 octets en mémoire. Cependant, si j'ai un pointeur INT de 64 bits, il sait faire progresser 8 octets. Donc, qui garde la trace de quel type de pointeur pTR code> est et où est-il stocké? Pour la simplicité, vous pouvez limiter cela à C ++. P>
3 Réponses :
Il n'est pas stocké nulle part, en soi. Le compilateur regarde le type du PTR et transforme l'opération ++ en une augmentation du nombre correct d'octets. P>
Merci. Je ne considérais même pas que cela pourrait être calculé au moment de la compilation.
dans le Table de symboles tandis que le compilateur fonctionne. Nulle part tandis que votre programme em> est exécuté, ou plutôt il est implicite dans le code de niveau inférieur produit par le compilateur. P>
Il n'est pas stocké nulle part, il est déterminé à la compilation. En fait, prenez ce code comme exemple:
int *abc = NULL;
cout << abc + 1; /* Prints sizeof(int) */
cout << (void *)((char *)abc + 1); /* Prints 1. Casting it back to void * is necessary,
otherwise it will try to dereference it and print as a string. */
Réponse courte: magie. Réponse longue, il n'est pas nécessaire de stocker nulle part, car le compilateur peut faire l'arithmétique du pointeur demandé au moment de la compilation.
Alok, vous devriez poster cela comme une réponse. C'est excellent.
De la FAQ 'aucune question n'est trop triviale ou trop "Newbie".' I>, donc la balise [N00B] est inutile et dans tous les cas, mal orthographiés.
ERM, j'ai pensé qu'il y avait une raison c'était la seule étiquette N00B. Je suis curieux pourquoi vous avez considéré cela mal orthographié.
Mis à part quelques noms d'utilisateur (et je veux dire peu), vous ne trouverez pas grand-chosepeak ici. La culture gère plutôt plus pour des programmeurs et des étudiants de manière consciencieuse qui envisagent d'être.
Ha, ok, ignorant bien le niveau de professionnalisme ici, je suis debout par n00b étant un mot, bien épelé à cela. Désolé d'entendre que je ne peux pas avoir de blagues tags, mais merci de votre réponse.
Ayez-vous votre chemin. Vous allez bien plus de frivolité sur Meta.
Je me sens comme un N00B à ne pas avoir répondu à la question suivante :-p.