Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
817 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Pkoi mes fonctions prennent tant de place en mémoire?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Pkoi mes fonctions prennent tant de place en mémoire?

n°734294
*LighTninG​*
Posté le 21-05-2004 à 22:23:15  profilanswer
 

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:

Code :
  1. int i,j,k ...
  2. char **tab


 
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...

mood
Publicité
Posté le 21-05-2004 à 22:23:15  profilanswer
 

n°734296
Joel F
Real men use unique_ptr
Posté le 21-05-2004 à 22:30:33  profilanswer
 

10 francs et mon pantalon que tu ne libére pas ton char** ...

n°734299
WhatDe
Posté le 21-05-2004 à 22:33:55  profilanswer
 

Joel F a écrit :

10 francs et mon pantalon que tu ne libére pas ton char** ...


 [:meganne]

n°734302
Joel F
Real men use unique_ptr
Posté le 21-05-2004 à 22:37:26  profilanswer
 

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

n°734313
*LighTninG​*
Posté le 21-05-2004 à 22:45:19  profilanswer
 

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 !

n°734315
Joel F
Real men use unique_ptr
Posté le 21-05-2004 à 22:46:18  profilanswer
 

Encore une victoire de Joel \o/

n°734379
torpe23
Posté le 22-05-2004 à 00:21:20  profilanswer
 

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é!

n°734382
Taz
bisounours-codeur
Posté le 22-05-2004 à 00:22:59  profilanswer
 

*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

n°734408
bjone
Insert booze to continue
Posté le 22-05-2004 à 00:34:11  profilanswer
 

c'est le paradigme du VisualBasic...


Message édité par bjone le 22-05-2004 à 00:34:33
n°734702
captainneu​neu
Posté le 22-05-2004 à 14:36:02  profilanswer
 

Taz a écrit :

la programmation est un truc magique, plein de croyances et de mythes


 
c'est si boooo


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Pkoi mes fonctions prennent tant de place en mémoire?

 

Sujets relatifs
fonctions PHP pour ODBC non reconnues[Php] switch($action) -> Pkoi il ne reconnait pas cette variable !!
Cherche site repertoriant les fonctions des lib ...[c] mon programme ne se lance pas !!pkoi? help
fonctions templateEquivalence fonctions MySQL-Oracle
Recherche de string ds un bloc mémoire sans type[Script mirc] Fonctions sockopen, sockwrite ...
Thread, prob libération mémoire(D6) Serveur COM (DLL) et allocation de mémoire
Plus de sujets relatifs à : [C] Pkoi mes fonctions prennent tant de place en mémoire?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR