J'obtient un leak :
delete : File : (null), Line : 0, Address : 0x804c200
et avec leaktracker (un outil de leak sous linux car je développe sous
linux donc avec g++ :
version gcc 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
) :
# LeakReport
# from new @ | size # Pointer Addr
L 0xb7e1548a 16 # 0x804c200
# total allocation requests: 1 ; max. mem used 0 kBytes
# leak 16 Bytes :-(
Je ne comprends pas pourquoi il me reporte un leak ... peut être
j'utilise mal les string ?
Merci de me donner un coup de main :D
PS : Je suis en train de lire la fac C++ fr mais je ne vois pas la
réponse à ma question surtout que dedans je lis qu'il vaut mieux
utiliser les std::string plutot que les char* :D
Je ne comprends pas pourquoi il me reporte un leak ...
Les objets de la bibliothèque standard utilisent souvent des pools. Donc à moins que tu n'arrives à les forcer à rendre toute la mémoire -- là regarde la doc de ton système --, il est fort probable que tu voies comme leak de la mémoire qui est toujours référencées par une variable statique et qui serait réutilisé pour une autre chaîne.
Dans le temps (je ne sais pas si ça vaut encore), il y avait une option qu'on pouvait donner pour que la bibliothèque standard de g++ utilise malloc/free, et non operator new/operator delete. Ce qui pourrait contourner le problème pour Jean-Michel, s'il ne s'agit qu'un remplacement des opérateurs globaux.
Sinon, ayant suivi un chemin semblable dans mon propre code, il pourrait jeter un coup d'oeil sur ma solution, dans le code à ma site (http://kanze.james.neuf.fr/code-fr.html). La documentation de ma classe MemoryCheck dans le sous-système Port (http://kanze.james.neuf.fr/doc/en/Test/html/index.html), ainsi que son utilisation dans les tests qui accompagnent la plupart des composants (voir surtout l'utilisation de makemakeOpts dans les fichiers de GNUmakefile, ainsi que la définition des classes dont elle déclenche l'utilisation).
-- James Kanze (Gabi Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Jean-Marc Bourguet wrote:
Frouin Jean-Michel <snoogie@free.fr> writes:
Je ne comprends pas pourquoi il me reporte un leak ...
Les objets de la bibliothèque standard utilisent souvent des
pools. Donc à moins que tu n'arrives à les forcer à rendre
toute la mémoire -- là regarde la doc de ton système --, il
est fort probable que tu voies comme leak de la mémoire qui
est toujours référencées par une variable statique et qui
serait réutilisé pour une autre chaîne.
Dans le temps (je ne sais pas si ça vaut encore), il y avait une
option qu'on pouvait donner pour que la bibliothèque standard de
g++ utilise malloc/free, et non operator new/operator delete. Ce
qui pourrait contourner le problème pour Jean-Michel, s'il ne
s'agit qu'un remplacement des opérateurs globaux.
Sinon, ayant suivi un chemin semblable dans mon propre code, il
pourrait jeter un coup d'oeil sur ma solution, dans le code à
ma site (http://kanze.james.neuf.fr/code-fr.html). La
documentation de ma classe MemoryCheck dans le sous-système Port
(http://kanze.james.neuf.fr/doc/en/Test/html/index.html), ainsi
que son utilisation dans les tests qui accompagnent la plupart
des composants (voir surtout l'utilisation de makemakeOpts dans
les fichiers de GNUmakefile, ainsi que la définition des classes
dont elle déclenche l'utilisation).
--
James Kanze (Gabi Software) email: kanze.james@neuf.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Je ne comprends pas pourquoi il me reporte un leak ...
Les objets de la bibliothèque standard utilisent souvent des pools. Donc à moins que tu n'arrives à les forcer à rendre toute la mémoire -- là regarde la doc de ton système --, il est fort probable que tu voies comme leak de la mémoire qui est toujours référencées par une variable statique et qui serait réutilisé pour une autre chaîne.
Dans le temps (je ne sais pas si ça vaut encore), il y avait une option qu'on pouvait donner pour que la bibliothèque standard de g++ utilise malloc/free, et non operator new/operator delete. Ce qui pourrait contourner le problème pour Jean-Michel, s'il ne s'agit qu'un remplacement des opérateurs globaux.
Sinon, ayant suivi un chemin semblable dans mon propre code, il pourrait jeter un coup d'oeil sur ma solution, dans le code à ma site (http://kanze.james.neuf.fr/code-fr.html). La documentation de ma classe MemoryCheck dans le sous-système Port (http://kanze.james.neuf.fr/doc/en/Test/html/index.html), ainsi que son utilisation dans les tests qui accompagnent la plupart des composants (voir surtout l'utilisation de makemakeOpts dans les fichiers de GNUmakefile, ainsi que la définition des classes dont elle déclenche l'utilisation).
-- James Kanze (Gabi Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34