Bonjour,
Afin de finaliser mon projet en C, j’ai besoin de libérer toutes les ressources utilisées par mon programme. Pour cela, l’idée est de stocker la liste des ressources dans une variable globale void* ressources[]
et de parcourir cette liste en libérant toutes les ressources une à une.
Bien qu’il compile, n’exécutez pas le programme ci-dessous au risque d’une erreur à l’exécution ligne 21 !
#include <stdio.h>
#include <stdlib.h>
#define MAX_RESRC 5
// Liste des ressources utilisées par le programme
void* ressources[MAX_RESRC] = {NULL};
int main(void)
{
// Création de plusieurs ressources
int* p = (int*) malloc(4 * sizeof(int));
FILE* f = fopen("test.txt", "r");
// Ajoutons ces ressources à la liste
ressources[0] = (void*) p;
ressources[1] = (void*) f;
// Libérons enfin les ressources
for (int i = 0; i < MAX_RESRC; ++i)
if (ressources[i] != NULL)
free(ressources[i]);
return 0;
}
Comment faire, à la ligne 21, pour distinguer les fichiers des ressources créées avec malloc ?
Les premiers se ferment avec fclose, les seconds avec free.
+0
-0