oui, les contextes sont prevus pour etre attaches a un thread de calcul chacun, ils contiennent toutes les variables d'etats globales du CAS (par exemple unite d'angle, nombre de chiffres, etc.), dans Xcas par exemple chaque onglet (donc chaque session) a son propre contexte independant des autres. Mais il ne devrait n'y avoir que tres peu de creation de contexte dans une appli (par exemple deja 100 ca ferait beaucoup d'onglets), et la destruction d'un contexte ne devrait pas arriver souvent (fermeture de la session de calcul correspondante).
Par contre la fuite memoire ne devrait quand meme pas provenir de la fonction lexer_functions_register qui ne depend pas du contexte. Il est possible que le destructeur de contexte soit en cause, vu que je n'en cree pas des tonnes, je n'ai jamais eu de probleme memoire a cause de ca.
Fuite mémoire
Modérateur : xcasadmin
Re: Fuite mémoire
Bon, si j'ai bien compris, il me faut un contexte par thread (mes threads sont ceux des pthreads). Jusqu'à présent, j'utilisais bêtement la déclaration :
context ct;
que je vais remplacer par un
context *ct;
ct = new context;
du plus bel effet qui sera créé à chaque nouveau thread. Mais ça ne réglera sûrement pas le problème de fuite pour les cas où je crée de nombreux threads car je vais me retrouver à la fin une destruction de contexte par thread, donc avec des bouts de mémoire non libérée (mes programmes peuvent créer des foultitudes et demi de threads).
context ct;
que je vais remplacer par un
context *ct;
ct = new context;
du plus bel effet qui sera créé à chaque nouveau thread. Mais ça ne réglera sûrement pas le problème de fuite pour les cas où je crée de nombreux threads car je vais me retrouver à la fin une destruction de contexte par thread, donc avec des bouts de mémoire non libérée (mes programmes peuvent créer des foultitudes et demi de threads).
Re: Fuite mémoire
Je pense avoir trouve la cause de la fuite memoire, il manquait un delete dans le destructeur global::~global(), ligne 3303 de global.cc il faut ajouter
delete _thread_param_ptr;
delete _thread_param_ptr;
Re: Fuite mémoire
Bonjour,
Je teste tout de suite et je vous tiens au courant du résultat. En tout cas, merci pour votre diligence.
Cordialement,
JKB
Je teste tout de suite et je vous tiens au courant du résultat. En tout cas, merci pour votre diligence.
Cordialement,
JKB
Re: Fuite mémoire
Je viens de tester, c'est parfait. Merci pour tout.
JKB
JKB