bonjour,
aujourd'hui, problèmes de comptage.
donc, j'ai un vector dans lequel je stocke des instances d'une classe, instances créées, sauf erreur, en statique avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
// dans le .h
std::vector <Food> Foods;
Food food;
//et qq part dans le .cpp
Food food(x,y);
Foods.push_back(food);
jusque ici, tout marche, ça compile et ça s'exécute comme prévus.

Je désire maintenant connaitre le nombre d'instance de la classe Food en mémoire et la place que cela prend.
j'ai donc ajouté à ma classe et au constructeur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
static int nbFood;
static int nbMemory;
// et
nbFood ++;
memory += sizeof(Food);
Jusque ici, tout vas bien, j'en ajoute un, cela comptabilise.
Cela se gatte lorsque je supprime un food que je voudrais du coup comptabiliser en moins dans nFood.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
nbFood --;
memory -= sizeof(Food);
dans le destructeur m'affiche n'importe quoi, vus fort logiquement comme j'ai pu le lire, que le destructeur est appelé de façon implicite dès que le programme quitte la portée dans lequel l'objet existe, ce qui est visiblement régulièrement le cas avec des appels du type à de multiples endroits de mon programme.

Je ne voudrais pas avoir à passez par l'allocation dynamique et les pointeurs, apparemment des vectors de pointeurs étant une quasi hérésie (surtout que je risque fort de ne pas maitriser la chose et de finir avec au mieux du code qui ne compile plus)...
Mais j'aimerais bien tout de même pouvoir suivre le nombre de Food crées et la place occupée...

Deux questions donc :
1 - puis je considérer qu'apres
le dernier food stocké et retiré de Foods n'existe plus nul part et est bien effacé de la mémoire ?
2 - Y a t'il une combine pour faire le petit comptage tant espéré sans passer par l'allocation dynamique ?