8 pièce(s) jointe(s)
representation d'une variable et son pointeur
Bonjour,
mon problème vient de la conceptualisation de la représentation des données en mémoire.
En partant du principe que la mémoire est un ruban de longueur pseudo-infini, je vois deux manières de représenter le code suivant.
Code:
1 2 3 4
| int n;
n = 42;
int *p;
p = &n; |
Pièce jointe 626359
creation d'une zone memoire (n) pour contenir un int
Pièce jointe 626360
initialisation de n avec la valeur 42
Pièce jointe 626361
creation d'un pointeur (p) sur int
Pièce jointe 626362
initialisation de p avec l'adresse de n
Ou bien de se dire que la mémoire (le ruban) est divisée en une unité atomique (l'octet) et crée un tableau référençant toutes ces cases. C'est-à-dire un tableau contenant les pointeurs de chaque case mémoire. Et à chaque création de zone mémoire, l'adresse de début de cette zone mémoire pointe vers celle-ci.
Pièce jointe 626364Pièce jointe 626365Pièce jointe 626366
création d'une zone mémoire (n) pour contenir un int puis initialisation de n avec la valeur 42. Création d'un pointeur (p) sur int
Pièce jointe 626367
initialisation de p avec l'adresse de n
cette différence de vue, implique la création d'un tableau et éventuellement de drapeaux dans les cases de ce tableau pour indiquer que les cases sont occupées. Il y a là une dissociation entre les données et leur référencement un peu comme dans le cas des disques durs avec les clusters et la table d'allocation du système de fichiers.
Si quelqu'un pouvait me faire savoir qu'elle est la bonne manière de voir, d'avance merci à lui/elle.
PS:Je me rend compte que cette question a largement dérivé vers une question de système informatique/système d'exploitation.