[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