Détection d'allocations mémoire - C++ - Programmation
Marsh Posté le 17-06-2004 à 22:07:55
Question naïve : sans remettre en cause l'utilisation d'outils comme Purify, dont l'utilité n'est pas à démontrer, qu'est-ce qui t'empêche d'obtenir cette information simplement en regardant le code de la fonction (à moins justement que tu n'ai pas accès au code source).
Marsh Posté le 17-06-2004 à 22:58:47
Ben le plus simple : tu regardes la taille de la mémoire occupée avant et après l'appel de ta fonction et tu l'écris si la différence est non nulle.
Marsh Posté le 18-06-2004 à 07:12:27
ça ne marche pas à cause du cache de l'allocateur côté utilisateur
Marsh Posté le 18-06-2004 à 10:36:49
Elle se trouve ou cette fonction ?
Sous quelle forme ?
Marsh Posté le 18-06-2004 à 13:51:15
On peut peut-être utiliser strace, qui dumpe tous les appels système. Il y a une version Linux et NT.
Marsh Posté le 18-06-2004 à 17:46:39
tu te fait une classe de MemoryPool et tu trace ces appels avec un Watcher.
Marsh Posté le 19-06-2004 à 00:25:06
Merci pour vos réponses.
HelloWorld a écrit : Elle se trouve ou cette fonction ? |
Elle se trouve dans une librairie statique et je dispose de son entete dans un .hpp.
J'ai réussi avec les fonctions "purify_new_inuse" et "purify_new_leaks" à détecter les éventuelles fuites mémoires de ma fameuse fonction...
Mais si une allocation et la désallocation correspondante sont effectuées dans cette fonction, je ne peux pas m'en apercevoir !
Joel F a écrit : tu te fait une classe de MemoryPool et tu trace ces appels avec un Watcher. |
Peux tu expliciter un petit peu, stp ?
Merci à tous
Sangohan
Marsh Posté le 19-06-2004 à 12:54:05
tu creer une classe à qui tu va déléguer la creation de ta mémoire (style Factory ou VirtualFactory). Lors de la création de tes objets ou des tes zones mémoires, tu appelles une méthode statique de ta MemoryPool en lieu et place de new et delete.
Ensuite pour logger tout ca, il suffit d'utiliser une classe de Watcher (dont j'ai donné le code y a pas logntemps sur ce forum).
cf Design Pattern par Gamma & cie pr les details.
Marsh Posté le 17-06-2004 à 20:16:18
Bonjour,
J'ai un programme en C++ qui utilise une fonction et je voudrais pouvoir vérifier si cette fonction effectue des allocations mémoires.
Je dispose de purify qui me permet de connaitre le nombre de blocs mémoire alloués par l'ensemble du programme mais pas par une seule fonction.
Si qqun a une idée...
Merci d'avance
Sangohan