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 :

Liberation memoire pour un tableau 2 dimensions


Sujet :

C

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 48
    Points : 40
    Points
    40
    Par défaut Liberation memoire pour un tableau 2 dimensions
    bonjour,
    j'ai un problème avec la libération mémoire d'un tableau 2 dimensions allouée dynamiquement.

    voila mon code :
    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
    33
    int main()
    {
    system("pause");
        int N = 10000,M=10000, i = 0, j=0;
        int** tab = NULL; // Ce pointeur va servir de tableau après l'appel du malloc
     
        tab = malloc(N * sizeof(int*)); // On alloue de la mémoire pour le tableau
        if (tab == NULL) // On vérifie si l'allocation a marché ou pas
        {
            exit(0); // On arrête tout
        }
     
        for (i = 0; i < M ; i++)
        {
            tab[i]=malloc(M * sizeof(int));
            for (j = 0; j<M;j++)
            {
                tab[i][j]=200;
            }
        }
     
     
        system("pause");
        for (i = 0; i<M; i++)
        {
            free(tab[i]);
        }
        free(tab);
     
        system("pause");
     
    return 0;
    }
    avant la creation du tableau la memoire utilisée (via le gestionnaire des taches) est de 1244ko

    apres la creation et le remplissage du tableau j'ai une memoire utilisée de 392 964ko

    apres le free() je retombe à une utilisation memoire de l'application de 2840ko


    Comment faire pour retomber à la valeur de départ ?

    merci d'avance

  2. #2
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Tu n'as pas de fuites mémoire.
    Par contre deux erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        for (i = 0; i < N ; i++)
        {
            tab[i]=malloc(M * sizeof(int));
    ....
        for (i = 0; i<N; i++)
        {
            free(tab[i]);
    ....
    Il est curieux que tu prennes la peine de tester correctement la réussite de l'allocation du tableau de pointeurs mais pas celle des tableaux de int.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 48
    Points : 40
    Points
    40
    Par défaut
    très juste je me suis tromper dans mes indice (je ne l'avais pas vu du fait de mon choix de M=N.

    il est impossible d'arriver a retomber à la quantité de mémoire utilisé au début ?

  4. #4
    Membre chevronné
    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
    Points : 1 750
    Points
    1 750
    Par défaut
    (message à effacer)

  5. #5
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Ton but est-il uniquement de tester la quantité de mémoire affichée par le
    gestionnaire des tâches ? curieux ...
    Personnellement ,il me semble qu'il se passe tellement de chose dans un système que l'information du gestionnaire est forcément peu fiable ou
    sujette à caution.
    Un seul mot d'ordre : etre sûr de son code .

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 48
    Points : 40
    Points
    40
    Par défaut
    d'accord merci beaucoup.
    non mon but n'est pas que la consommation mais je doit créer des matrices et faire des calculs avec (pour un projet de mathématique) et comme il est noté je ne voulais pas avoir fait une erreur et perdre betement des points si je pouvais corrigerer une eventuelle erreur.
    En tout cas merci à tous et bonne continuation

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

Discussions similaires

  1. Programme moulinette pour réorganisation tableau 2 dimensions
    Par quentin31000 dans le forum Général Python
    Réponses: 8
    Dernier message: 28/06/2013, 10h33
  2. Conteneur pour un tableau à 2 dimensions
    Par Mat.M dans le forum SL & STL
    Réponses: 7
    Dernier message: 25/02/2010, 17h15
  3. masque gaussien pour un tableau à une dimension
    Par bilzzbenzbilz dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 20/02/2009, 15h04
  4. Réponses: 7
    Dernier message: 09/02/2009, 14h28

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