C++Avoir la valeur d'une var avec son adresse

gagner79 Messages postés 288 Statut Membre -  
mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour !

Je souhaite comparer une valeur avec la valeur de toutes les variables de la ram, et les modifier.
Comment faire pour trouver la valeur d'une variable quand on ne connait que son adresse ?
Par exemple avoir la valeur de la variable d'adresse 0x805f000.

Merci d'avance !
A voir également:

5 réponses

mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   7 896
 
En admettant que tu aies stocké dans un int * l'adresse d'un int (ca paraît un bon départ :p) il suffit d'utiliser l'opérateur unaire * :

#include <stdio.h>

int main(){
  int x = 69;
  int *px = &x;
  int y = *px;
  printf("%d\n",y);
  return 0;
}


Bonne chance
0
gagner79 Messages postés 288 Statut Membre 40
 
Si j'ai bien compris je met l'adresse de la variable dans x ?
0
mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   7 896
 
Dans l'exemple que je t'ai donné, px stocke l'adresse de x.
Pour accéder à la valeur à l'adresse px, il suffit d'appeler *px (ici je stocke cette valeur dans la variable y).

Bonne chance
0
gagner79 Messages postés 288 Statut Membre 40
 
Donc avec ça je ne peux pas partir avec juste l'adresse d'une variable d'un autre programme ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   7 896
 
Je ne comprends pas ce que tu veux faire ou ce que tu ne comprends pas. Quand tu as une adresse px, tu interprètes ce qui est à cette px en appelant *px.

- Si px est de type int *, alors *px est interprété comme un int.
- Si px est un char *, *px est interprété comme un char.
- Si px est int *** alors *px est interprété comme un int **, **px est interprété comme un int *, et ***px comme un int.

Si lorsque tu évalues *px, px n'est pas une adresse (valide), tu obtiens en général une erreur de segmentation.
Si *px est interprété dans un type qui fait par exemple 4 octets, alors qu'en fait la donnée en fait 1, tu obtiens en général une erreur de segmentation.

Tu n'es pas sensé accéder à la plage mémoire d'un autre programme.

Bonne chance
0