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

  FORUM HardWare.fr
  Programmation
  C++

  new qui renvoie un pointeur énorme?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

new qui renvoie un pointeur énorme?

n°1574709
muzu_
Posté le 14-06-2007 à 03:51:27  profilanswer
 

:hello:  
 
c'est possible que new renvoie un pointeur qui pointe dans les 3 000 000 000 (alors que j'ai que 1go de ram?)
 
dans le constructeur de l'objet créé, this est déjà comme ça ( un peu logique en fait.. )
 
le plus bizare c'est que d'autre objets créés après avec new ont une adresse plus "résonable"...
 
valgrind trouve pas de grosses erreurs ( enfin juste des micros erreur de gtk toussa qui sont là à chaque fois )
 
comment c'est possible, pourquoi ca pourrait arriver? aidez moi ça fait des heures que jsuis dessus  :cry:

mood
Publicité
Posté le 14-06-2007 à 03:51:27  profilanswer
 

n°1574810
Taz
bisounours-codeur
Posté le 14-06-2007 à 11:36:28  profilanswer
 

tu confonds l'adresse et l'espace alloué.

n°1574863
Lam's
Profil: bas.
Posté le 14-06-2007 à 13:05:18  profilanswer
 

Non, il confond adresse logique et adresse physique. :)
 
En gros: l'OS fait pointer les pointeurs vers où il veut en mémoire virtuelle (et d'ailleurs 2 processus différents peuvent avoir des pointeurs de valeur identique qui pointent vers des zones complètement différentes).  
 
Et derrière, l'unité de gestion de la mémoire qui se trouve dans le processeur se charge de convertir ces adresses logiques en adresses physiques (une vraie adresse en RAM). Quitte à faire du travail intermédiaire pour aller chercher le contenu dans le swap (ou le fichier de pagination) si la zone a été swappée.

n°1575211
muzu_
Posté le 14-06-2007 à 22:32:49  profilanswer
 

ha d'accord ^^
(espace alloué de 3go ? )
en même temps ça plantait pas (enfin après). jcomprends pas trop pourquoi ça va aussi loin mais bon.
merci beaucoup

n°1575418
Taz
bisounours-codeur
Posté le 15-06-2007 à 11:41:54  profilanswer
 

Lam's a écrit :

Non, il confond adresse logique et adresse physique. :)
 
En gros: l'OS fait pointer les pointeurs vers où il veut en mémoire virtuelle (et d'ailleurs 2 processus différents peuvent avoir des pointeurs de valeur identique qui pointent vers des zones complètement différentes).  
 
Et derrière, l'unité de gestion de la mémoire qui se trouve dans le processeur se charge de convertir ces adresses logiques en adresses physiques (une vraie adresse en RAM). Quitte à faire du travail intermédiaire pour aller chercher le contenu dans le swap (ou le fichier de pagination) si la zone a été swappée.


tu m'appelles le jour ou tu vois une adresse physique

n°1575545
Lam's
Profil: bas.
Posté le 15-06-2007 à 14:11:33  profilanswer
 

Taz a écrit :

tu m'appelles le jour ou tu vois une adresse physique


Bien sûr. Par adresse physique, j'entends "adresse mise sur le bus" (la position dans la barrette mémoire, on s'en tape un peu).
 
Lorsque ton PC démarre, il est en mode réel. Il peut y rester (sous DOS par exemple), auquel cas l'adressage linéaire correspond à l'adressage physique. Il peut aussi passer à tout moment en mode protégé (ce que font tous les OS modernes). Il faut alors demander spécifiquement à l'OS d'aller chatouiller une adresse linéaire (donc physique) spécifique.  
 
C'est comme ça que fonctionnent les drivers qui utilisent le DMA. C'est comme ça que fonctionne le kernel pour faire son paging (via sa Global Descriptor Table). Et c'est comme ça que les applications graphiques d'il y a 10-15 ans arrivaient à afficher du graphisme sous Windows 95. L'adresse physique de la carte VGA (en mode graphique standard) par exemple, commence à 0xA0000h.

n°1576730
deadalnix
Posté le 19-06-2007 à 12:43:53  profilanswer
 

Question de securité, l'adresse physique t'es innaccesible. Sinon tu peux appeler du code de n'importe ou, avec n'importe quel droit d'execution, aller modifier des parametre de programmes qui tourne en root pour leur faire faire ce que tu veux, etc . . .
 
L'adressage en 32bits se fait sur 4Go, donc une adresse de ce type est parfaitement possible.

n°1576861
Taz
bisounours-codeur
Posté le 19-06-2007 à 16:11:56  profilanswer
 
n°1576956
deadalnix
Posté le 19-06-2007 à 17:37:51  profilanswer
 


 
Je t'invite a t'exprimer a lieu de denigrer . . .


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

  new qui renvoie un pointeur énorme?

 

Sujets relatifs
liste chnainée avec 2 pointeur sur le premier et le dernier elementpointeur sur fonction membre / switch case
[debutant] pointeurPointeur sur fonction
Pointeur ou pas ? (résolu)fonction qui retourne un pointeur
pointeur et JAVA[résolu] getHeight() me renvoie toujours 0 !
[C++] Classe génériques et pointeur (Dev cpp)[C++]test sur le contenu d'un pointeur
Plus de sujets relatifs à : new qui renvoie un pointeur énorme?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)