[Pdmtl] Memory leak

Mathieu Bouchard matju at artengine.ca
Fri May 5 12:36:52 EDT 2006


On Thu, 4 May 2006, Alexandre Quessy wrote:

> Si je fais bang 1 fois par seconde sur un symbole contenant "x 25",
> combien d'octets ont-il fuit en 1 minute ?

60 * 0 = 0

> D'après moi, c'est seulement un caractère qui aurait ainsi fuit. (un
> demi octet, pour le charactère "x") Ai-je raison ? Merci.

"x" prend un octet complet (où as tu trouvé le demi-octet?), son
terminateur ("\0") prend 1 octet; gensym() fait deux malloc(), un pour le 
"x", terminateur inclus, et un pour l'élément de la table de symboles, 
lequel prend 12 octets (24 octets en mode 64-bit). Chaque malloc dépense 
quelques octets de plus que ce qui est indiqué, généralement de 4 à 16 
octets, mais parfois plus. (ça dépend de la version de glibc et de la 
quantité d'octets que l'on désire allouer)

ici il n'y a pas de fuite parce qu'il n'y a qu'un seul appel à gensym en 
tout. on peut aussi faire beaucoup d'appels à gensym sans fuite, si c'est 
toujours les mêmes symboles qui reviennent. La fuite de mémoire arrive 
quand on utilise beaucoup de symboles différents qui ne seront plus 
utilisés par la suite. e.g. prends pas [makefile blah%d] pour tous les 
entiers jusqu'à 100000000 pcq ta RAM va dire 'ayoye'.

 _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju
| Freelance Digital Arts Engineer, Montréal QC Canada



More information about the Pdmtl mailing list