en fait, je ne comprends pas vraiment la gestion de la mémoire.
J'ai un cas très simple, que je ne comprends pas:
Quand je fais:
1 2 3 4 5
| int main(){
{int o=3;
}
int p=4;
} |
alors si je me place à l'adresse mémoire &o, on a :
0x001AFDBE cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
0x001AFDD4 03 00 00 00 cc cc cc cc 2c fe 1a 00 ef 16 90 00 01 00 00 00 78 14 ....ÌÌÌÌ,þ..ï.......x.
0x001AFDEA 89 00 a0 1b 89 00 ee 6b 26 73 00 00 00 00 00 00 00 00 00 b0 fd 7f ..*...îk&s.........°ý.
0x001AFE00 64 7a da 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 00 f0 fd dzÚ.................ðý
0x001AFE16 1a 00 26 00 00 00 70 fe 1a 00 69 10 90 00 82 f9 ac 73 00 00 00 00 ..&...pþ..i....ù¬s....
0x001AFE2C 34 fe 1a 00 1f 15 90 00 40 fe 1a 00 33 38 21 76 00 b0 fd 7f 80 fe 4þ......@þ..38!v.°ý.€þ
on voit bien la présence de 03, au début de la deuxième ligne, (qui correspond à l'adresse de o). Quand on quitte la portée intérieure, je m'attendais à ce que la variable o soit supprimée. Or, on voit toujours le 03 au début de la ligne. Malgré cela, on a toujours la présence du 03.
Ainsi, après avoir passé la ligne p=4, on a:
04 00 00 00 cc cc cc cc cc cc cc cc 03 00 00 00
Partager