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 :

La mémoire ne peut être read


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut La mémoire ne peut être read
    Bonjours à vous !
    Je suis confronté à un problème qui commence à me taper sur le système.
    Je fais une initialisation d'un tableau de structure (je la donne pour informations mais je ne pense pas qu'elle soit très utile) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    structure cellule
    {
          entier tab[9];
    }
    Dans le main(), mon tableau est déclaré ainsi :

    Une fonction me sert à initialiser les 9 valeurs de chaque cellules grâce à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pour cpt1 de 0 à t_ut
    {
    pour cpt2 de 0 à t_ut
         {
    init(&tableau[cpt1][cpt2]);
    }
    }
    Seulement, après compilation, windows m'indique que la "mémoire ne peut être read" pour un t_ut >= 5.
    Je ne comprends pas du tout. Si ma fonction init n'était pas correcte, elle ne fonctionnerait pas pour un t_ut <= 4.

    Une suggestion ?
    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par asgardia
    Une suggestion ?
    Pourrait-on voir le code de la fonction init? Du moins un code minimal, compilable qui montre le problème?

    Jc

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Voici le code de la fonction init qui est plutôt simplissime !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void init(cellule *lacase)
    {
         int cpt;
     
         for( cpt = 0; cpt < 9; cpt ++ )
         {
              lacase->tab[cpt] = 1; 
         }
     
    }

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Et le code du main?

    Jc

  5. #5
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par asgardia
    structure cellule
    {
    entier tab[9];
    }
    entier est un typedef de int ?

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par crocodilex
    entier est un typedef de int ?
    Très probablement

    Jc

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Voici le code tel qu'il est écris dans le main (sachant que t_ut vaut 8) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    for (cpt1 = 0 ; cpt1 <= t_ut ; cpt1 ++ )
       {  
            for (cpt2 = 0 ; cpt2 <= t_ut; cpt2 ++ )
            {
               init(&sudoku[cpt1][cpt2]);
            }        
       }

  8. #8
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Jusqu'à maintenant je ne vois rien d'anormal. Montres nous un peu plus de code....

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Bon, j'ai l'impression qu'on doit tirer les vers du nez... Si tu veux de l'aide, il serait bien de montrer un code minimal compilable qui montre le problème... Donc tout ce que tu peux tant que cela a un rapport avec le problème...

    En résumé:

    - La déclaration de ton tableau sudoku
    - Le main qui l'utilise
    - Toute portion du code qui utilise ce tableau pour le moment et est susceptible de poser un problème
    Si à chaque fois je vais devoir dire : c'est quoi les 2 instructions qui suivent...

    Jc

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bon ok, je vais balancer tout ! lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    case **tableau;
        tableau = NULL;
        tableau = (case **) malloc(TAILLE_UTILE * sizeof(case **));
     
        if(tableau == NULL)
        printf("La reservation a echoue");
        else
        {
            while(cpt <= t_ut && test == 'TRUE')
            {
                 tableau[cpt] = NULL;
                 tableau[cpt] = (case *) malloc(TAILLE_UTILE * sizeof(case *));
                 if(sudoku[cpt] == NULL)
                 {
                      test = 'FALSE';
                      printf("La reservation a echoue");
                 }
                 else
                 cpt ++;
            }
        }
     
     
       for (cpt1 = 0 ; cpt1 <= t_ut ; cpt1 ++ )
       {  
            for (cpt2 = 0 ; cpt2 <= t_ut; cpt2 ++ )
            {
     
               init(&sudoku[cpt1][cpt2]);
            }        
       }
    Très honnêtement je me demande si le problème ne peut pas venir de DevC++ ...

  11. #11
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    il est impossible que ce code compil

    EN PLUS case est un mot reservé du langage !!!!!!!!!!!!!

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par asgardia
    Bon ok, je vais balancer tout ! lol
    <code non compilable>
    Très honnêtement je me demande si le problème ne peut pas venir de DevC++ ...
    Tu donnes du code qui ne compile pas et évidemment, c'est de la faute de l'outil... T'es un petit malin toi...

    Je vais faire simple :

    Ou bien tu postes une version compilable et réduite au minimum de ton code montrant le défaut, ou bien tu vas te faire voir ailleurs.

    Là. c'est clair ?

Discussions similaires

  1. Erreur "mémoire ne peut être read"
    Par ggvert dans le forum C++
    Réponses: 2
    Dernier message: 02/04/2011, 07h47
  2. Réponses: 12
    Dernier message: 30/10/2009, 17h06
  3. La mémoire ne peut être "read"
    Par mikadom dans le forum Apache
    Réponses: 4
    Dernier message: 30/04/2009, 11h53
  4. Réponses: 8
    Dernier message: 18/07/2008, 16h06
  5. La mémoire ne peut être "read"
    Par sun_man dans le forum Visual C++
    Réponses: 4
    Dernier message: 05/03/2007, 19h08

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