Lire la variable contenue dans une adresse

seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004 - 4 mai 2004 à 15:43
seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004 - 5 mai 2004 à 21:14
Bonjour a tous,

Quelqun pourait-il me dir comment faire pour connaître la variable contenue dans une adresse de la mémoire vive.

Je vous remercie, car même si vous ne répondez pas à ma question, ce forum et vos réponses m'on déja beaucoup apporté.

16 réponses

hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
4 mai 2004 à 16:18
dans la mémoire de ton processus ou ailleurs ?
0
seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004
4 mai 2004 à 16:27
Non partout si c'est possible, mais si tu sait déja comment faire dans le processus ça serait un bon debut.

Merci
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
4 mai 2004 à 16:46
mais tu as l'adresse qu'il te faut ?

disons que tu définisses un entier comme ca :

int a = 10;

tu obtiens son adresse par
&a

si tu as un entier définit comme ca :
int *a = new int;
*a = 10;

dans ce cas, a contient l'adresse et *a, le contenu

peut-etre pourrais-tu etre plus explicite sur ce que tu veux faire
0
seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004
4 mai 2004 à 16:58
Dans ton exemple tu regarde l'adresse d'une variable que tu a créée.

Moi je voudrais trouver par exemple la variable (si il y en a une) contenu dans l'adresse ox001568fc de la mémoire.

Je ne sais même pas si cela est possible c'est pour ça que je pose la question.

Je me doute que même si c'est possible ça engendrerai pas mal de problème comme par exemple avoir un pointeur du type de la variable que l'on cherche a lire.

Je suis débutant et je ne connaît pas vraiment les "limites" de la programation.

C'est vrai que j'avais mal posé ma question.
0

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

Posez votre question
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
4 mai 2004 à 17:08
ben, tu fais un petit test
#include <stdio.h>

int main(int argc, char* argv[])
{
int * a;
a = (int*)0x001568fc;
printf("%x\n",a);
printf("%d\n",a);
return 0;
}


mais bon, faut connaitre la sémantique de la donnée à rechercher ... là j'ai mis entier, mais bon, ca peut etre n'importe quoi
0
seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004
4 mai 2004 à 17:23
Super sa marche en fait je ne connait pas le (int*) à quoi sert-il?

En tous cas merci beaucoup, je ne pensais pas avoir une réponse si rapide et si efficase.
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
4 mai 2004 à 17:28
en fait, c'est ce qu'on appelle à cast, ca permet de dire au compilateur que la valeur qu'on veut affecter est d'un certain type .
ici, on lui dit que 0x001568fc correspond à l'adresse mémoire d'un entier
0
seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004
4 mai 2004 à 17:34
A ok je ne savait pas qu'on pouvait le faire avec des pointeur.

Merci pour tout.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
5 mai 2004 à 07:30
c'est quoi ca? tu ve faire un access violation ?

si tu lit n'importe ou ya risque de planter ton prog
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
5 mai 2004 à 08:27
surtout si tu lis en dehors des plages de ton programme ou sur des adresses "reservées", mais bon, c'est le principe
0
seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004
5 mai 2004 à 16:31
Nan en fait je débute et donc pour toutes les nouvelles chose que j'aprend (ici les pointeurs) j'esaye de faire un programme en relation.
Ici je voulais retrouver une variable que je crais seulement grâce a sont adresse.
Mais en fait ya un truque qui marche pas, c'est que je ne peut rechercher que dans une petite plage de la mémoire (entre 0x0012e000 et 0x00130000 en gros enfin j'ai pas tout eseyer non plus) sinon comme tu dit djl, mon programme plante.
Ya des zones de la mémoire auquelles on n'a pas accé?

Merci
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
5 mai 2004 à 17:31
oui, en dehors de ton process
ou adresses spéciales du genre :
0xFDFDFDFD No man's land (normally outside of a process) 
0xDDDDDDDD Freed memory 
0xCDCDCDCD Uninitialized (global) 
0xCCCCCCCC Uninitialized locals (on the stack) 
0
seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004
5 mai 2004 à 18:04
Ok merci.
T'aurais pas un site qui parle de la mémoire et éventuellement des pointeurs?
comme je vois que dans ton prescedent message c'est écrit anglais je suppose que ça vient d'un site...
0
MetalDwarf Messages postés 241 Date d'inscription mardi 29 octobre 2002 Statut Membre Dernière intervention 23 janvier 2006
5 mai 2004 à 18:54
Ou la attention tu ne sais pas dans quel domaine tu t aventure...
Le probleme est que la gestion de la memeoire est specifique a chaque OS, et qu en plus la memeoire est virtuelle, donc ce sont des questions complexes de mapping d espaces, enfin tout ca est assez obscur.

Par contre je ne peux que te conseiller de t interesser de TRES pres aux pointeurs, c est un cauchemar au debut mais ca ouvre PLEINS de possibilites apres... C est fondamental en C.
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
5 mai 2004 à 19:12
c'est parce que je suis bilingue intensif ... :)

non, ca vient de la msdn, et donc oui c'est spécifique windows et comme le dit MetalDwarf la gestion de la mémoire est dépendante de du système d'exploitation
0
seymour45 Messages postés 11 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 5 mai 2004
5 mai 2004 à 21:14
Ok merci pour vos réponses.
Je veux bien que les pointeurs ouvre pleins de possibilité mais maintenant que j'arrive plus ou moins à les métriser je ne comprend pas bien leurs but.

Plutôt que d'aller chercher l'adresse de la variable pour la lire ou la modifier pourquoi ne pas prendre directement la variable elle même?

auriez-vous des exemples d'utilisation?

Merci
0
Rejoignez-nous