Pkoi mes fonctions prennent tant de place en mémoire? [C] - C - Programmation
Marsh Posté le 21-05-2004 à 22:30:33
10 francs et mon pantalon que tu ne libére pas ton char** ...
Marsh Posté le 21-05-2004 à 22:33:55
ReplyMarsh Posté le 21-05-2004 à 22:37:26
free(tab) ca libére que UN pointeur de ton char**.
faut faire une boucle qui libéres tous les char* des ton tab PUIS libérer ton tab
Marsh Posté le 21-05-2004 à 22:45:19
Joel F -> C'est bon tu peux garder tes 10 francs et ton pantalon, c'est effectivement le free(tab[i]) que javais oublié. J'avais toujours cru qu'un free(tab) suffisait pour tout enlever Merci bcp !
Marsh Posté le 22-05-2004 à 00:21:20
Pour completer l'explication, tes "int" sont virés de la mémoire puisque ce sont des variables locales et donc qu'elles sont logées dans la pile. Lors de la sortie de la fonction, le pointeur de pile est décrementé, donc tes variables n'existent plus.
Pour tout comprendre, empruntes un bon bouquin de C, tout devrait y être expliqué!
Marsh Posté le 22-05-2004 à 00:22:59
*LighTninG* a écrit : J'avais toujours cru qu'un free(tab) suffisait pour tout enlever |
la programmation est un truc magique, plein de croyances et de mythes
Marsh Posté le 22-05-2004 à 00:34:11
c'est le paradigme du VisualBasic...
Marsh Posté le 22-05-2004 à 14:36:02
Reply
Marsh Posté le 21-05-2004 à 22:23:15
Bonjour !
J'ai un problème avec une utilisation mémoire trop importante.
J'appelle en boucle des fonctions dans lesquelles sont déclarées quelques variables, comme ceci:
Le tab est créé dynamiquement à chaque passage dans la fonction et à la sortie je fais un "free(tab)" donc en théorie il est supprimé de la mémoire à la sortie.
Néenmoins en ce qui concerne les autres int... est-ce qu'ils sont supprimé à la fin du passage dans la fonction ou pas? Paske l'occupation mémoire ne s'arrête jamais de monter quand les fonctions tournent ! Je voudrais que ces fonctions puissent tourner en boucle avec une occupation mémoire constante ! Eclairez moi svp je ne comprends pas...