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 :

Probleme de résérvation mémoire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de H-bil
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Par défaut Probleme de résérvation mémoire
    Salut
    je veux utiliser un tableau de deux dimension de taille dynamique en utilisant un tableau de pointeurs
    voici donc le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct matrice
    {
        float **t;
        int l,c;
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        int i,n;
        matrice A;
     
        cout << "Donner n la taille de la matrice A" << endl;
        cin >> n ;
        A.l=n;
        A.c=n;
     
     
        for(i=0;i<A.l;i++)
        {                                                                           
            A.t[i]=(float *) malloc(sizeof(float)*A.c);                           
        }
    j'ai aucune erreur à la compilation mais à l'execution le programe s'arréte à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A.t[i]=(float *) malloc(sizeof(float)*A.c);
    d'ou vient se probleme
    merci

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        int i,n;
        matrice A,b;
        cout << "Donner n la taille de la matrice A" << endl; // C new look ?
        cin >> n ;
        A.l=n;
        A.c=n;
        for(i=0;i<A.l;i++)
        {                                                                           
            A.t[i]=(float *) malloc(sizeof(float)*A.c);
       // Mais qui a auparavant alloué le tableau de pointeurs  : A.t = malloc(sizeof(float*)*A.l )?                      
        }

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0;i<A.l;i++)
    {                                                                           
         A.t[i]=(float *) malloc(sizeof(float)*A.c);                           
    }
    Mais A.t n'existe pas
    il faudrait peut etre faire un malloc avant.
    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A.t = malloc(sizeof(float)*A.ligne)

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 309
    Par défaut
    Déjà, ce n'est pas du C, mais du C++ que tu nous fais là, ce n'est pas le bon forum... Ensuite, ce n'est pas parce qu'il n'y a pas d'erreur à la compilation qu'il n'y a pas d'erreur dans le code. Et pour finir, il faut commencer par allouer un tableau de pointeurs et ensuite allouer chaque tableau.

    Voilà ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // voilà ce qu'il manque ! Tu n'alloues pas de tableau au début.
    A.t = malloc(sizeof(float *) * A.l);
     
    for(i = 0; i < A.l; i++)
    {                                                                           
         A.t[i] = malloc(sizeof(float) * A.c);                           
    }
    PS : essaye d'aérer ton code et de donner des noms plus explicite... Je pense que ça t'aidera pour l'avenir...

  5. #5
    Membre éclairé Avatar de H-bil
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Par défaut
    merci
    j'ai pas fai attention
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A.t=(float **) malloc(sizeof(float*)*A.l);
    ça marche maintenant

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Il faut faire attention à ce que tu écris car ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cout << "Donner n la taille de la matrice A" << endl;
    cin >> n ;
    c'est du C++ non du C, il faut choisir ton camp
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme perte de mémoire - Chilkat
    Par Olphébus dans le forum Débuter
    Réponses: 5
    Dernier message: 05/08/2008, 01h16
  2. Probleme d'accès mémoire
    Par sirfanel dans le forum C++
    Réponses: 4
    Dernier message: 12/04/2008, 16h09
  3. Probleme d'acces mémoire des méthodes
    Par alexandre7g dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 03/08/2007, 10h11
  4. [C#] probleme de consommation mémoire
    Par xtream dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/06/2006, 13h16
  5. Probleme mémoire
    Par Malibu31 dans le forum Langage
    Réponses: 4
    Dernier message: 23/03/2006, 17h34

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