Allocation et libération de mémoire.
Résolu
CoDForlan
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
-
-
Bonjour, je suis en train de faire un programme concernant le poker. J'ai créé une fonction dans laquelle j'alloue 52 struct card, comme indiqué ci-dessous :
struct card{ int value; char suit; int already_taken; };
struct card* create_deck(){ struct card* deck = (struct card*)malloc(52 * sizeof(struct card)); if(!deck){ return NULL; } // initialize the cards for (int i = 0; i < 52; i++) { deck[i].value = (i % 13) + 2; deck[i].already_taken = 0; if (i < 13) deck[i].suit = 'C'; // carreaux else if (i < 26) deck[i].suit = 'T'; // trefles else if (i < 39) deck[i].suit = 'H'; // coeurs else deck[i].suit = 'P'; // pique } return deck; }
dans le main:
int main(){ struct card* deck52 = (struct card*)malloc(52 * sizeof(struct card)); if(!deck52){ return -1; } deck52 = create_deck(); //code... free(deck52); return 0; }
Ensuite, j'ai analysé avec l'outil Dr. Memory pour vérifier s'il y avait des fuites, et il y a bel et bien des fuites de mémoire dans la fonction create_deck. Cependant, je ne vois pas où je devrais placer mon free(deck).
Si quelqu'un pourrait m'éclairer, merci pour vos futures réponses. Genoce.
A voir également:
- Allocation et libération de mémoire.
- Mémoire vive - Guide
- RAM : type, format, CAS, vitesse, tout sur la mémoire vive - Guide
- Comment liberer de l'espace sur gmail - Guide
- Nettoyer memoire iphone - Guide
- C'est un secret bien gardé : ce réglage d'expert peut doper les performances de votre PC - Guide