IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Pointeur d'adresse mémoire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Par défaut Pointeur d'adresse mémoire
    Bonjour,
    J'ai un souci en C. Je souhaite créer un pointeur vers une adresse donnée de ma mémoire sans modifier celle-ci ni contraindre son allocation future, en effet cette adresse mémoire est une section de mémoire contenant le code de mon programme.

    J'ai faussement résolu le problème pour le moment en instanciant une variable à l'adresse précédente puis en incrémentant mon pointeur par la suite.
    Est-on obligé d'instancier une variable à cette adresse pour pouvoir réaliser ce pointeur?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Salut,

    Je n'ai pas compris ta question.

    Peux-tu donner un exemple concret ?

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Tu ne peux pas, à ma connaissance, mettre une adresse référençant des portions quelconques de code dans un pointeur. La chose qui s'en approche le mieux est un pointeur sur fonction.

    Quant à instancier une variable "à cette adresse" pour mettre l'adresse+1 dans un pointeur, c'est illusoire à mon avis : le compilateur n'est pas du tout forcé de mettre cette variable à l'adresse juste avant le code qui suit sa définition. Il n'est même pas forcé de mettre une série de variables en mémoire dans l'ordre de leur définition.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Par défaut
    En fait je désire récupérer les données issues du code de mon microprocesseur octet par octet, ces données se trouve à partir d'une certain adresse. J'ai trouvé une solution un peu plus propre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char *p; 
    p = 0;  
    p += ADRESSE_BASE;
    Je n'ai pu initialiser mon pointeur qu'à 0, je l'ai donc incrémenter de la valeur voulue par la suite. Est-il possible de le faire pointer directement à l'adresse voulue?

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Si tu écris directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define ADRESSE_BASE 0x....   
    char *p = ADRESSE_BASE;
    tu auras un avertissement du compilateur. Pour l'éviter, transforme ADRESSE_BASE d'entier en adresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define ADRESSE_BASE (void*)0x....   
    char *p = ADRESSE_BASE;
    Naturellement, il est de ton entière responsabilité de donner une valeur correcte à ADRESSE_BASE. Le compilateur ne peut rien vérifier lui-même.

Discussions similaires

  1. Réponses: 15
    Dernier message: 30/09/2008, 23h36
  2. Réponses: 7
    Dernier message: 04/06/2007, 12h23
  3. lire la valeur d'une adresse mémoire
    Par ilimo dans le forum Windows
    Réponses: 17
    Dernier message: 11/04/2006, 15h21
  4. Réponses: 6
    Dernier message: 24/03/2006, 18h24
  5. Réponses: 6
    Dernier message: 19/09/2005, 19h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo