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

  FORUM HardWare.fr
  Programmation
  C

  Question pointeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Question pointeurs

n°886181
elo84
Posté le 29-10-2004 à 21:45:36  profilanswer
 

Bonjour,  
 
J'ai un petit problème avec les pointeurs: j'aimerai à partir d'une valeur d'adresse mémoire connue, trouver la valeur de la variable correspondant à cette adresse.  
 
Par exemple, j'ai une adresse du style 77E081DE et je veux afficher la valeur de la variable.(je sais que c'est un float qui se trouve à cette adresse)  
 
J'ai essayé:  
 
float *ptr;  
ptr=0x77E081DE; (ou &ptr=0x77E081DE)  
printf("%f",*ptr);  
 
...et ça marche pas  
 
Si quelqu'un pouvait me donner une piste et m'aider un peu ce serait super sympa. Merci d'avance.


Message édité par elo84 le 29-10-2004 à 21:57:54
mood
Publicité
Posté le 29-10-2004 à 21:45:36  profilanswer
 

n°886184
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-10-2004 à 21:48:29  profilanswer
 

oulalala !!! comment peux tu être rééllement SUR que l'adresse absolue que tu donnes contienne un float ? [:wam]
c'est n'importe quoi ton truc ! tu n'alloues que dalle (un float prend plus d'un octet de place), et tu fais des supputations venues d'ailleurs !!
alloues donc la mémoire, places y un float, et tu verras que tu arriveras à tes fins


---------------
J'ai un string dans l'array (Paris Hilton)
n°886187
masklinn
í dag viðrar vel til loftárása
Posté le 29-10-2004 à 21:50:39  profilanswer
 

Je seconde Harko, d'ou vient ton adresse là, comment peux tu être sûr de ce qui s'y trouve?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°886193
elo84
Posté le 29-10-2004 à 22:06:28  profilanswer
 

Harkonnen a écrit :

oulalala !!! comment peux tu être rééllement SUR que l'adresse absolue que tu donnes contienne un float ? [:wam]


 
Avec un éditeur de mémoire tu peux lire la valeur qui se trouve à une adresse mémoire à ce que je sache...
 
Je veux juste récupérer la valeur dont je connais l'adresse mémoire. Si quelqu'un d'autre et qui a compris veut bien m'aider, merci davance.

n°886195
Taz
bisounours-codeur
Posté le 29-10-2004 à 22:07:37  profilanswer
 

oui tu peux. mais à l'exécution. pas à priori

n°886201
Lam's
Profil: bas.
Posté le 29-10-2004 à 22:21:51  profilanswer
 

Taz a écrit :

oui tu peux. mais à l'exécution. pas à priori


... et seulement si l'adresse appartient à son processus. Parce que d'une part, rien qu'en regardant la tête du pointeur, on voit que c'est du memory map (c'est une addresse valide uniquement pour un process donné donc a priori).  
 
Mais en plus, l'OS (et le processeur) empêche d'accéder à une zone mémoire qui n'appartient pas au process. Il faut donc aller à un niveau plus bas au niveau système...
 

n°886202
Taz
bisounours-codeur
Posté le 29-10-2004 à 22:23:33  profilanswer
 

t'aurais pas un truc 'la mémoire peut pas être written' ?

n°886204
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-10-2004 à 22:29:10  profilanswer
 

elo84 a écrit :

Avec un éditeur de mémoire tu peux lire la valeur qui se trouve à une adresse mémoire à ce que je sache...
 
Je veux juste récupérer la valeur dont je connais l'adresse mémoire. Si quelqu'un d'autre et qui a compris veut bien m'aider, merci davance.


tu sais, dans un système multitache, plusieurs processus peuvent cohabiter, avec leur propre zone mémoire, et un processus ne peut pas normalement lire ou écrire la mémoire du voisin [:itm]
rien ne te garantit que l'adresse que tu donnes appartienne à ton processus, tu as toutes les chances de te prendre un Access Violation
 
edit: [:benou_grilled]


Message édité par Harkonnen le 29-10-2004 à 22:29:26

---------------
J'ai un string dans l'array (Paris Hilton)
n°886207
Taz
bisounours-codeur
Posté le 29-10-2004 à 22:33:38  profilanswer
 

surtout que c'est pas des adresses physiques que tu manipules

n°886211
elo84
Posté le 29-10-2004 à 22:39:15  profilanswer
 

Des éditeurs mémoires arrivent à accéder à la mémoire d'un processus choisi, on devrait pouvoir faire la même chose en C, non?
 

mood
Publicité
Posté le 29-10-2004 à 22:39:15  profilanswer
 

n°886213
Taz
bisounours-codeur
Posté le 29-10-2004 à 22:42:11  profilanswer
 

moi je serais curieux de savoir pourquoi tu veux faire ça

n°886223
elo84
Posté le 29-10-2004 à 22:49:10  profilanswer
 

Faire un programme qui contient une partie édition de mémoire.

n°886226
Lam's
Profil: bas.
Posté le 29-10-2004 à 22:54:53  profilanswer
 

Soit c'est pour se rajouter des points de vie dans Half Life2, soit c'est pour surfer des sites pornos. A cet age là, y a que ça qui motive à la programmation système :)
 
Bon, elo, c'est très très très compliqué, il faut programmer des trucs assez bas niveau. Le fait même que ça marche pour toi me dit que tu es sous Windows XP ou 2000 (NT n'utilisait pas ce genre d'addresses trop proche de son segment kernel), et me dit que tu as le rôle Administrateur sur ton poste. Tu peux jeter un oeil là éventuellement:  
http://msdn.microsoft.com/library/ [...] memory.asp

n°886227
masklinn
í dag viðrar vel til loftárása
Posté le 29-10-2004 à 22:55:07  profilanswer
 

elo84 a écrit :

Des éditeurs mémoires arrivent à accéder à la mémoire d'un processus choisi, on devrait pouvoir faire la même chose en C, non?


Citation :

Mais en plus, l'OS (et le processeur) empêche d'accéder à une zone mémoire qui n'appartient pas au process. Il faut donc aller à un niveau plus bas au niveau système...


 :whistle:


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°886231
Lam's
Profil: bas.
Posté le 29-10-2004 à 23:00:53  profilanswer
 

Masklinn,elo> http://www.woodmann.com/fravia/iceman1.htm
C'est clairment un poil plus compliqué que d'aller simplement déréférencer un pointeur, non ?
 
 
Taz,Harko> En googlant sur VAD et PTE, on tombe sur ça :) : http://64.233.183.104/search?q=cac [...] dows&hl=en

n°886235
elo84
Posté le 29-10-2004 à 23:07:15  profilanswer
 

Merci beaucoup Lam's :) c'est exactement ce que je cherchais. Vais regarder tout ça maintenant.

n°886286
matafan
Posté le 30-10-2004 à 05:10:36  profilanswer
 

Sous linux tu peux accéder à l'espace d'adressage d'un processus via /proc/PID/mem, mais vu qu'on sait toujours pas sous quel OS tu es...
 
PS : vu tes posts dans ce topic tu n'est visiblement pas familier avec le concept de mémoire virtuelle, donc évite de prendre de haut ceux qui répondent.


Message édité par matafan le 30-10-2004 à 05:16:31

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

  Question pointeurs

 

Sujets relatifs
[html] question basique sur location.replace[PHP] Question POO / pointeurs [résolu- presque]
petite question de logique sur les pointeursQuestion sur les pointeurs...
Pointeurs sur fonctions (question pointue !)petite question sur les pointeurs
[C] Petite question sur les pointeurs deux étoiles qui se suivent[C++] Question sur les pointeurs, aidez moi à comprendre svp !
[C++] question bête sur la programmation et les pointeurs...[c++] petite question sur les pointeurs (pas un problème)
Plus de sujets relatifs à : Question pointeurs


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