Roro8883
Messages postés70Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention 1 février 2008
-
28 sept. 2007 à 23:55
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
29 sept. 2007 à 11:19
Bonjour à tous, y'a un truc que je comprends pas à propos des pointeurs dans le code suivant :
int value = 33;
int* pvalue = &value;
// Affichage de l'adresse du pointeur
printf ("Adresse pointeur : -%x-\n\n\n", pvalue);
// Affichage du "contenu" du pointeur (vers où il pointe)
cout << "Contenu du pointeur : -" << *pvalue << "-\n\n\n";
Ce que je comprends pas, c'est que quand je lance plusieurs le programme (sans fermer les anciens, je les laisse ouvert pour garder value en mémoire) et bien l'adresse du pointeur est toujours là même, et vaut tjrs la même valeur !
Normalement ça derait changer d'adresse à chaque nouvelle exécution, non ?!
Si quelqu'un pouvait m'expliquer pourquoi l'adresse du pointeur est toujours la même...
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 29 sept. 2007 à 11:19
Si tu redémarres ton pc ca sera exactement pareil. Ta variable est alloué sur la pile. Or ton programme ne change pas d'une exécution a l'autre, donc l'adresse sur la pile est toujours la meme.
Chaque exécution de ton programme est un nouveau processus et chaque processus travail dans une mémoire séparée fournie par windows. Donc l'adresse réel de ta variable dans la ram change a chaque fois, mais le décalage entre le début de la pile de ton processus et ta variable est toujours le meme !
Donc c'est normal que l'adresse soit toujours la meme.
agent 047
Messages postés5Date d'inscriptionsamedi 26 août 2006StatutMembreDernière intervention18 juin 2008 29 sept. 2007 à 00:37
Si l'adresse est toujours la même c'est à cause du noyau de ton OS qui a memorisé l'emplacement de ton programme dans la ram.
Pour voir l'adresse de ton pointeur changé, il faut redémarrer le PC.