2012-02-24 2 views
0

Je souhaite surveiller la quantité d'espace mémoire utilisée par HEAP lors de l'exécution de mon programme où des objets C++ ont été construits et détruits selon les besoins.surveillance de l'utilisation du tas

Quel est le moyen de recueillir cette information? Je pense que les opérateurs nouveaux et supprimés à l'échelle globale devraient être utilisés d'une manière ou d'une autre, mais je ne sais pas exactement comment procéder.

toute aide?

+0

double possible de [Comment la consommation de mémoire de référence?] (Http://stackoverflow.com/questions/7157772/how-do-you-benchmark-memory-consumption) – pmr

+0

S'il vous plaît recherche avant de poster Ou regardez simplement le volet "connexe" lorsque vous tapez votre question. –

+0

Il serait utile que vous spécifiiez la plate-forme cible et quel tas exactement (par défaut C tas ou un tas personnalisé). – lapk

Répondre

3

Si vous voulez un exemple, voici le code que j'utilise pour surveiller l'utilisation de new/delete.

https://github.com/CYBORUS/cyborus-game-engine/blob/master/CGE/Memory.h https://github.com/CYBORUS/cyborus-game-engine/blob/master/CGE/Memory.cpp

+0

J'incrémente la quantité de mémoire utilisée dans l'opérateur new (overriden), mais je ne peux pas décrémenter la quantité de mémoire libérée dans l'opérateur delete (overriden) car elle n'a pas d'argument de taille. Une idée? –

+0

Ooo..Je comprends. Vos méthodes d'allocation et de libération le gèrent! Merci beaucoup. Qu'en est-il des versions de tableau? Sont-ils les mêmes ? –

+1

Oui. Cela devrait aussi fonctionner avec les tableaux. Lorsque vous créez un tableau, il alloue juste un plus grand bloc; les données sont toutes contiguës. La différence est qu'il traverse et exécute tous les constructeurs ou destructeurs. – TheBuzzSaw