Bonjour à tous,
Bonjour Tamiel.
Je viens de finir mon soft, mais lors de la mise en embarqué, je m'aperçois de fuite mémoire. Mon programme fonctionne pendant 30 min alors qu'il devrait fonctionner pendant des années.
J'ai cerné le problème, tout mes allocations dynamiques sont détruites dans mon destructeur. Le problème donc viens de mes Py_XDECREF, j'en ai omis certain et je n'ai pas fais de PyFinalyse(). Ainsi, lorsque j'appelle mon main en boucle la mémoire augmente infiniment.
Le problème lorsque j'essaie de faire mes Py_XDECREF sa plante, je ne sais pas pour qu'elle raison.
Par ailleurs, je suis en C++ donc je possède des classe, dans ces différentes classes je fais intervenir plusieurs fois des Py_Initialyse(). Et mon Py_mod().
Pour pallier à cela, j'ai mis mon Py_Initialyse() et Py_Finalyse() dans mon main. Ainsi, je n'ouvre qu'une seule fois l'instance du compilateur.
Ensuite j'a commente qq milliers de ligne de code pour me ramener au principal
J'ai ca dans un .cpp (pas le main)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 mymod = PyImport_ImportModule("interface"); PyObject* mdict = PyModule_GetDict(mymod); PyObject* func5 = PyDict_GetItemString(mdict, "interoperability_Adding") PyObject* class_need_interoperability = PyEval_CallObject(func5,NULL); ..code commenté.. Py_XDECREF(class_need_interoperability); Qd je met cette ligne ca me plante. Py_XDECREF(func5); Py_XDECREF(mdict); Py_XDECREF(mymod); ;
Tamiel as tu une idée.
Je pense quand je serais d'où cela vient ca va ensuite allé vite.Je continue mes recherches.
Merci beaucoup.
Julien![]()
Partager