Libération Tableau 2D

Résolu/Fermé
Adiren Messages postés 40 Date d'inscription samedi 3 septembre 2016 Statut Membre Dernière intervention 14 janvier 2022 - Modifié le 27 nov. 2019 à 09:34
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 28 nov. 2019 à 09:51
Bonjour, j'ai besoin de créer une fonction qui libère un tableau en 2D et le passer à null, pour l'instant j'ai fait ça et ça ne fonctionne pas

void libere(int*** tableau, int N){
    
    for (int i=0; i<N; i++){
   ‌‌‍‍‍‌     free(tableau[i]);
    }

    free(tableau);
    
    tableau = NULL;
    
}


Merci d'avance pour votre aide
A voir également:

2 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
27 nov. 2019 à 09:37
bonjour,
"ça ne fonctionne pas": as-tu un message d'erreur?
il me semble utile de comprendre comment le tableau a été alloué, et comment la fonction est appelée.
0
Adiren Messages postés 40 Date d'inscription samedi 3 septembre 2016 Statut Membre Dernière intervention 14 janvier 2022 2
Modifié le 27 nov. 2019 à 10:03
Le programme crash, ça devrait ressembler à cela

int** initMatrix(int N, int M){
    
    int** tableau = (int**) malloc(sizeof(int*)*N);
    
    for(int i=0; i<N; i++){
        
        tableau[i]‌‌‍‍‍‌ = (int*) malloc(sizeof(int)*M);
        
        for(int j=0; j<M; j++){
            tableau[i][j]=i+j;
        }
    }
    
   return tableau; 
}
0
Adiren Messages postés 40 Date d'inscription samedi 3 septembre 2016 Statut Membre Dernière intervention 14 janvier 2022 2
27 nov. 2019 à 09:42
Il est alloué en N+1 malloc
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Adiren Messages postés 40 Date d'inscription samedi 3 septembre 2016 Statut Membre Dernière intervention 14 janvier 2022
27 nov. 2019 à 10:07
il me semble utile de comprendre comment la fonction est appelée.
0
Adiren Messages postés 40 Date d'inscription samedi 3 septembre 2016 Statut Membre Dernière intervention 14 janvier 2022 2
27 nov. 2019 à 10:18
initMatrix(N, M);

libere(tableau,N);
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Adiren Messages postés 40 Date d'inscription samedi 3 septembre 2016 Statut Membre Dernière intervention 14 janvier 2022
27 nov. 2019 à 11:14
la variable tableau n'est ni déclarée, ni initialisée avant l'appel à libere()?
0
Tomsuper Messages postés 1926 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 356
27 nov. 2019 à 09:40
Bonjour,

Un tableau en 2D avec un int *** ? j'ai peut être mal compté mais, je vois 3 étoiles, le principe que tu as fait dans ton for, et cependant très bien, faudrait allez plus loins.

Cordialement.
0
Adiren Messages postés 40 Date d'inscription samedi 3 septembre 2016 Statut Membre Dernière intervention 14 janvier 2022 2
27 nov. 2019 à 09:43
Dans les fonctions pour libérer un tableau 2D, on passe l'adresse du tableau 2D si bien compris
0
Tomsuper Messages postés 1926 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 356
27 nov. 2019 à 09:57
Je vois pas l'intérêt mais ok
0