Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1101 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] un pt'it truc m'intrigue:

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] un pt'it truc m'intrigue:

n°64138
aurel
Fraggueur en liberté
Posté le 09-10-2001 à 10:47:45  profilanswer
 

je débute le C++ et je viens d'écrire un truc qui sert vraiment a rien, mas je voulais tout de meme voir le rst:
 
int main(int argc, char* argv[])
{
 int x, y, z;
 x = 5;
 y = 9;
 z = 565;
 int* p1 = &x;
 int* p2 = &y;
 int* p3 = &z;
 cout << p1 << "\n" <<p2 << "\n" << p3 << "\n";
 return 0;
}
 
rien de bien méchant, a la portée de n'importe qui.
Ce qui m'intrigue, c que les 3 adresse sont TOUJOURS LES MEMES !!! a caqhe execution qquesoit l'état du systeme.
 
ca pas zarbi, ca ?

mood
Publicité
Posté le 09-10-2001 à 10:47:45  profilanswer
 

n°64139
BENB
100% Lux.
Posté le 09-10-2001 à 10:59:37  profilanswer
 

Le resultat depend du systeme...
sur beaucoup de systemes les adresses sont virtuelles ou paginees du coup d'une execution su l'autre ces adresses sont les memes puisqu'il n'y a pas de raison pour que la pile soit a un endroit different par rapport au reste du programme.

n°64165
Giz
Posté le 09-10-2001 à 12:37:39  profilanswer
 

c zarb ton pb !! moi j'hallucinerai devt un truc comme ca , je ne comprendrai plus rien au c  :lol:


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°64196
brunomaill​y
Les PC, ça tourne pas rond
Posté le 09-10-2001 à 15:18:56  profilanswer
 

Puisque tu est sous un système avec mémoire virtuelle, chaque programme a l'impression d'avoir toutes les adresses libres.
 
Ton OS va donc tranquilement charger l'éxécutable toujours à la même adresse, et allouer la pile au même endroit.
Il n'a aucune raison de faire différemment, puisque toutes les adresses sont disponibles... c'est plus simple !


---------------
Pourquoi les cartes mères ont-elles des noms à coucher dehors ?
n°64226
H4dd3R
Q2
Posté le 09-10-2001 à 16:55:47  profilanswer
 

Comment ça tte les adresses sont disponibles??
 
À ce moment là pquoi ne pas tt écrire à 0x00000000??  :??:  
 
Non j´y crois pas, les adresses qu´un proc manipule (avec un malloc ou un new ou ...) sont des adresses dans l´espace mémoire virtuel (alias le proc sait pas si elles sont effectivement en mémoire vive ou en pagefile, et l´os peut le changer à tt moment)..
Mais elles sont qd même uniques..
 
Pour moi je pense que le mode debug essaie d´allouer tjrs les mêmes adresses pour aider l´utilisateur en cas de débug, mais si elles sont pas dispo il en prendra d´autres!!


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°64241
Ace17
Posté le 09-10-2001 à 17:43:50  profilanswer
 

brunomaily a raison : toutes les addresses sont disponibles, du point de vue de ton programme. C'est l'os qui se charge de faire la conversion

n°64334
zop
1 world, 1 web, 1 Windows
Posté le 10-10-2001 à 19:24:24  profilanswer
 

ou alors, les adresses sont données en relatif, par rapport à l'adresse du début de segment de données, adresse définie à la compilation ...


---------------
- "Qui diable es-tu ?"
n°64537
brunomaill​y
Les PC, ça tourne pas rond
Posté le 11-10-2001 à 13:44:16  profilanswer
 

H4dd3R a écrit a écrit :

À ce moment là pquoi ne pas tt écrire à 0x00000000??  :??:



Parceque 0 est par convention une adresse invalide (NULL).
 
Avant la mémoire virtuelle, les programmes demandaient à être chargés à une adresse arbitraire. Quand la MV est venue on a gardé cette adresse.
Quelle importance ? 0 ou 100'000 c'est pareil, puisque c'est virtuel dans les deux cas.
 
A noter que certaines adresses sont quand même réservées à l'OS (au-dessus de 2 ou 3 Go).
 
Essaye ton programme en mode Release, tu auras un résultat similaire !
 

zop a écrit a écrit :

ou alors, les adresses sont données en relatif...


en C++ mode 32 bits il n'y a pas de pointeurs relatifs, ils sont absolus dans l'espace d'adressage.


---------------
Pourquoi les cartes mères ont-elles des noms à coucher dehors ?
n°64552
BENB
100% Lux.
Posté le 11-10-2001 à 14:30:47  profilanswer
 

ET si, en 32 bits (x86) les adresses sont relatives au debut du segment... mais le segment fait 4Go... alors un seul suffit...
de plus les variables en question sont allouees sur la pile donc se sont toujours les memes la pile est toujours au meme endroit dans le segment....


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] un pt'it truc m'intrigue:

 

Sujets relatifs
truc chelou avec phpbase de donnée, quel est le meilleur truc ?
[ XML ] - un truc tout con : le if[Perl] Equivalent en Perl de la commande: echo "truc" > truc.txt
[HTML] Truc con : image sur une balise INPUT type SUBMIT,apache : quelqu'un j'ai un truc bizarre dans mes logs
[C++] Truc idiot : définition d'une constante dans une classeLe protocole ICQ, quelqu'un a compris ce truc ????
Truc zarb en VB avec On Error et GoTol[SQL sous VBA] BESOIN D UN TRUC UN PEU SPECIAL!!!BESOIN De PROS!!!!!
Plus de sujets relatifs à : [C++] un pt'it truc m'intrigue:


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR